솔직히 개판 오분전 인듯 ;;;;
ALU (arithmetic-logic unit) ; 산술논리 연산장치
ALU[에이엘유]는 중앙처리장치의 일부로서 컴퓨터 명령어 내에 있는 연산자들에 대해 연산과 논리동작을 담당한다. 몇몇 프로세서들에서는 ALU가 연산장치(AU)와 논리장치(LU)의 두 부분으로 나뉘어져있는 경우도 있다. 또, 어떤 프로세서들은 1 개 이상의 AU가 장착된 경우도 있는데, 예를 들어 고정 소숫점 연산을 위한 것과 부동 소숫점 연산을 위한 전용 AU를 별도로 두는 경우이다 (PC의 부동 소숫점 연산은 별도로 분리된 칩에 있는 부동 소숫점 처리장치(floating-point unit)에서 행해지는 경우도 있는데, 이것을 수치연산 보조 프로세서(numeric coprocessor)라고 부른다).
대체로 ALU는 입력과 출력을 위해 프로세서와 메인 메모리 그리고 입출력 장치에 직접 액세스를 하는데, 입력과 출력은 버스라고 부르는 전자적인 통로를 따라 흐르게 된다. 입력은 연산코드(때로 이것을 줄여서 op code라고 부른다)을 포함하고 있는 기계 명령어, 하나 또는 그 이상의 연산자 그리고 형식코드로 구성된다. 연산코드는 수행해야 할 연산이 무엇인지를 ALU에게 알려주며, 연산자는 그 연산을 위해 사용된다(예를 들어 두 개의 연산자를 서로 더하거나 논리적으로 비교하라는 연산일수도 있다). 형식코드는 연산코드와 함께 결합되어, 연산의 대상이 고정 소숫점 형식인지, 부동 소숫점 형식인지를 알려준다. 출력은 레지스터 내에 있는 결과와, 수행된 연산이 성공적이었는지에 관한 상태를 알려주는 값들로 구성된다.
일반적으로 ALU는 입력된 연산자와, 현재 더해지고 있는 연산자, 누산기에 저장된 결과, 그리고 시프트된 결과들을 저장하기 위한 공간을 가지고 있다. ALU 내의 비트의 흐름과, 그 안에서 수행된 연산들은 게이트 회로에 의해 통제되는데, 게이트 회로는 다시 각 연산코드에 대해 특별한 알고리즘이나 순서를 사용하는 순차 논리 장치(sequence logic unit)에 의해 통제된다. 연산장치 내에서 곱셈이나 나눗셈은 일련의 덧셈이나 뺄셈 그리고 자릿수를 이동하는 방법(shift) 등을 통해 이루어지며, 음수를 표현하는 방법에도 여러 가지가 있다. 논리장치 내에서는 16개의 논리 연산중 하나가 수행될 수 있는데, 예를 들어 두 개의 연산자를 비교해서 서로 맞지 않는 비트가 어떤 것인지를 찾아내는 것 등이 그것이다.
ALU의 설계는 분명히 프로세서의 중요한 부분으로서, 명령어를 좀더 신속하게 다루기 위한 새로운 접근방식이 지속적으로 개발되고 있다.
레지스터 : 산술/연산적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU 내부의 기억장치.
이제부터 레지스터 종류에 대해서 알아 봅시다.
범용 레지스터 : 계산 결과 임시저장, 산술 및 연산 등에 사용 되는 레지스터.
| AX(AH, AL) |
산술 연산에 주로 사용된다. |
| BX(BH, BL) |
베이스의 주소를 저장하는데 사용 |
| CX(CH, CL) |
반복적으로 실행되는 특정 명령에 사용 |
| DX(DH, DL) |
일반 자료를 저장하는데 사용. | ※참고 : ()안에 있는 것들은 16bit를 쪼개놓은 8bit 레지스터들 이다.
세그먼트 레지스터 : 세그먼트라고 하는 메모리의 한 영역에 대한 주소 공간을 제공한다.
| DS(Data Segment Register) |
DS의 시작 주소를 담고 있다. |
| ES(Extra Segment Register) |
메모리 주소지정을 다루는 스트링 연산에 사용. DI 레지스터와 관계 있으며, DS 레지스터의 확장 세그먼트로 사용 가능. |
| SS(Stack Segment Register) |
스택의 베이스 주소 저장. |
| CS(Code Segment Register) |
명령어 코드의 베이스 주소 저장. | ※참고 : 32bit로 넘어오면서 FS, GS레지스터가 추가되었지만 따로 설명을 하지 않겠다.(여분의 세그먼트라고 기억해 두자.)
포인터 레지스터(오프셋 레지스터)
| BP(Base Pointer) |
SS 레지스터와 함께 사용되어 스택 내부의 변수 값을 읽는데 사용. |
| IP(Instruction Pointer) |
다음 명령어의 오프셋(offset)을 저장하며, CS 레지스터와 합해져 다음에 수행될 명렁어의 주소를 형성한다 |
| SP(Stack Pointer) |
SS 레지스터와 함께 사용되며 스택의 가장 끝 주소를 가리킨다. PUSH, POP 시에 4byte씩 변화한다. |
인덱스 레지스터 : 인덱스 주소지정과 덧셈 뺄셈에 사용됨.
| DI(Destination Index) |
다음 목적지의 주소를 담고 있다. |
| SI(Source Index) |
출발지 주소에 대한 값을 담고 있다. | ※참고 : 앞서 설명한 레지스터들은 16bit를 기준으로 설명되어있다. 최근 문서등을 보면 EBP, ESP등이 나올텐데 앞에 E는 'Extended'라는 의미를 표현한다. EBP, ESP등은 32bit 레지스터이며 하는 기능은 거의 유사하다.
플래그 레지스터 : 컴퓨터의 행동과 상태를 나타내는 레지스터.
(뭔가 어렵게 적혀있어...;;; 레지스터는 CPU내부의 저장공간... 아니였나? ;;;)
MUX (멀티플렉서) 는 그냥 논리회로 책을 봐주세요~~ |
蛇骨
2010/03/06 20:41
2010/03/06 20:41