★KEYWORD★
산술 논리 장치, 산술과 논리연산을 계산하는 디지털 회로
CPU ALU (산술 논리 장치) 란?
CPU는 메모리에 저장된 명령어를 읽어 드리고, 해석하고, 실행하는 장치이다. CPU는 ALU, 제어장치, 레지스터로 구성되는데, 계산을 담당하는 ALU(산술 논리 장치(算術論理裝置, arithmetic and logical unit)는 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합 같은 논리연산을 계산하는 디지털 회로이다. 산술 논리 장치는 컴퓨터 중앙처리장치의 기본 설계 블록이다.
ALU에서 어떤 형태의 산술연산을 계산하기 위해서는 피연산자와 수행할 연산이 필요하다. ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치(CU)로부터 수행할 연산을 알려주는 제어신호를 받아들여 다양한 연산을 수행한다. 연산 후에 ALU는 결과값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장하고 연산결과에 대한 추가적인 상태 정보인 플래그(flag)를 플래그 레지스터로 내보낸다.
ALU가 받아들이는 정보
ALU는 계산을 수행하는 부품으로서, 계산을 위한 피연산자, 연산 이 필요하다.
- 피연산자: 레지스터가 전달.
- 연산: 제어장치가 제어 신호를 통해 전달.
- '1 + 2' 라는 연산을 수행할 때, 1과 2는 피연산자에 해당하고 '+' 는 연산에 해당한다.
- ALU는 산술 연산 뿐만 아니라, 논리 연산을 비롯한 다양한 연산을 수행한다.
ALU가 내보내는 정보
1. 결과값
- ALU의 output, 즉 연산의 수행 결과는 숫자, 문자, 메모리 주소 등 다양한 결과를 산출한다.
- 결값은 메모리에 저장되기 전, 일시적으로 레지스터에 저장된다.
- CPU가 메모리보다 레지스터에 접근하는 속도가 훨씬 빠르기 때문이다. 이는 프로그램 실행 속도에도 영향을 줄 수 있기에, 레지스터에 우선 저장하는 것이다.
2. 플래그
- 예를 들면, 결괏값이 이진수일 때 결괏값의 부호(+, -)를 쉽게 판단할 수 있도록 추가 정보로서 플래그를 제공.
- 혹은, 연산 결과가 연산 결과를 담을 레지스터 크기보다 클 때(=overflow 상태) '결괏값이 너무 크다'는 플래그를 보냄.
플래그들은 프로그램 실행 도중 반드시 기억해야 하는 참고 정보들이며, 플래그 레지스터라는 플래그 값 저장공간에 저장됨.
대표적인 플래그
- 부호 플래그: 연산한 결과의 부호를 나타냄.
- 제로 플래그: 연산 결과가 0인지 여부를 나타냄.
- 캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지를 나타냄.
- 오버플로우 플래그: 오버플로우가 발생했는지를 나타냄.
- 인터럽트 플래그: 인터럽트가 가능한지를 나타냄.
- 슈퍼바이저 플래그: 커널 모드로 실행 중인지, 사용자 모드로 실행 중인지를 나타낸다.
그 외 ALU
- 내부 회로 가산기(덧셈)
- 보수기(뺄셈)
- 시프터(시프트 연산)
- 오버플로우 검출기
등...
출처: 위키백과, 나무위키, https://velog.io/@clock509/posts
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)