산술 논리 장치

산술 논리 장치(算術論理裝置, , ALU)는 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합 같은 논리연산을 계산하는 디지털 회로이다. 산술 논리 장치는 컴퓨터 중앙처리장치의 기본 설계 블록이다.

많은 종류의 전자 회로는 어떤 형태의 산술연산을 계산하는 데 필요한데, 심지어 디지털 시계에 있는 작은 회로조차도 현재 시간에 1을 더하고, 언제 알람을 울려야 하는지를 검사하는 작은 산술논리장치를 지녔다.

명백히, 가장 복잡한 전자 회로는 펜티엄 같은 현대의 마이크로프로세서 칩 내부의 설계일 것이다. 그러므로 이런 프로세서는 내부에 강력하고 매우 복잡한 산술논리장치를 가지고 있다. 사실, 현대의 마이크로프로세서(혹은 메인프레임)은 멀티코어, 다중의 실행 장치, 다중의 산술논리장치를 가지고 있다.

대다수의 다른 회로는 내부에 산술논리장치를 포함하고 있다. 엔비디아나 ATI의 그래픽 카드 같은 그래픽 처리 장치, 오래된 80387 보조 처리기 같은 부동소수점 장치, 사운드 블래스터 사운드 카드에서 발견할 수 있는 디지털 신호 처리기, CD 재생기, 고선명 텔레비전 등이 있다. 이런 모든 것은 내부에 몇 개의 강력하고 복잡한 산술논리장치를 가지고 있다.

역사: 폰 노이만의 제안 
수학자 존 폰 노이만은 에드박이라고 불리는 새로운 컴퓨터 설계보고서를 작성했을 때, 1945년에 산술논리장치의 개념을 제안했다. 1946년에, 그는 프린스턴의 고급 연구소 (IAS)에서 컴퓨터 설계로 그의 동료와 일했다. IAS 컴퓨터는 많은 이후 컴퓨터의 원형이 된다. 제안에서, 폰 노이만은 산술논리장치를 포함해서, 그의 장치가 필요하게 될 거라는 어떤 믿음의 윤곽을 잡았다.

폰 노이만은 산술논리장치가 컴퓨터에 필요하다고 진술했다. 왜냐하면 컴퓨터가 덧셈, 뺄셈, 나눗셈, 곱셈을 포함한 기본적인 수학연산을 계산하도록 보장되어야 했기 때문이다. 그러므로 그는 "컴퓨터는 이러한 연산을 위해서 특별한 장치가 포함되어야 합리적"이라고 믿었다.

기수법 

산술논리장치는 반드시 디지털 회로의 나머지처럼 동일한 형식을 사용하여 숫자를 처리한다. 현대의 프로세서에서, 거의 대부분은 2의 보수 이진수 표현이다. 초기의 컴퓨터는 1의 보수, 부호와 등급 형식, 심지어 숫자당 열개의 튜브를 지닌 진짜 십진수를 포함하여 다양한 기수법을 사용했다.

각각의 이런 기수법의 산술논리장치는 다르게 설계되었고, 덧셈과 뺄셈을 계산하는 산술논리장치를 쉽게 만들 수 있는 기수법인, 2의 보수를 위한 현재 선호에 영향을 끼쳤다.

단순 연산 
대부분의 산술논리장치는 다음의 연산을 계산할 수 있다:

 정수형 산술 연산 (덧셈, 뺄셈, 그리고 가끔 곱셈과 나눗셈, 이것보다 더 복잡할지라도)
 비트 논리 연산 (AND, NOT, OR, XOR)
 비트 시프트 연산 (부호 확장을 지녔거나, 지니지 않거나, 왼쪽이나 오른쪽으로 특정 비트만큼 이동하거나 회전하는 워드). 시프트는 2로 곱셈하거나 나눗셈하는 것처럼 해석할 수 있다.

복합 연산 
어떠한 연산도 가능한 산술논리장치를 설계할 수 있지만, 문제는 연산이 더 복잡해질수록 회로 복잡도, 가격, 전력소모와 크기 면에서 실용성이 떨어지게 된다. 따라서 산술논리장치는 종종 간단한 연산은 매우 빠르게 처리할 수 있지만 복잡한 연산은 간단한 산술논리연산의 조합으로 나누어 처리하도록 외부 처리 외로를 이용하는 경우가 많다.

예를 들어, 숫자의 제곱근을 계산하는 방법은 산술논리장치의 복잡도에 따라 다음과 같이 다양하게 구현될 수 있다. 
 단일 클록에 제곱근을 처리하는 복잡한 장치
 여러 개의 단순한 산술논리장치가 공장의 생산라인처럼 단계별로 제곱근을 계산하게 하는 장치. 한 연산이 완전히 끝나기 전에 다음 연산을 받을 수 있고, 속도도 전체 처리시간만큼 지연되기는 하지만 단일클록을 이용하는 복잡한 산술논리장치만큼 빠르게 구현할 수 있다.
 하나의 단순한 산술논리장치가 제어장치의 지시에 따라 여러 단계에 걸쳐 반복적으로 제곱근을 계산하는 장치.

위의 사례들은 빠르고 비싼 방식부터 느리고 싼 방식 순으로 나열되어 있다.

각주 

디지털 회로
중앙 처리 장치
컴퓨터 산술