6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식 제 6 장 중앙 처리 장치 6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
주변 장치(peripheral equipment) 중앙 처리 장치(CPU) 제어 장치, 연산 장치, 그리고 기억 장치를 포함한 컴퓨터 본체 주변 장치(peripheral equipment) 입출력 장치와 보조 기억 장치.
[그림 6-1] 중앙처리 장치와 주 기억 장치의 명령 실 행 과정
(1) 기억 장치에서 읽어 온 데이터에 대해서 다음과 같은 조작을 수행한다. 중앙 처리 장치의 가장 중요한 기능 명령 세트(instruction set)를 제공하는 것 제공된 명령어 세트를 처리하는 것. 명령 세트 컴퓨터 규모에 따라서 명령 세트의 크기는 다르며 수십에서 수백 가지 명령으로 구성 프로그램의 편의성, 경제성, 신뢰성 등에 중요한 영향을 미치는 요소들 중에 하나이며 컴퓨터 성능에 직접적인 영향을 미침. 중앙 처리 장치의 기능 (1) 기억 장치에서 읽어 온 데이터에 대해서 다음과 같은 조작을 수행한다. 연산 처리 ; 고정 소수점 수, 부동 소수점 수, 10 진수에 관한 4칙 연산 비교 처리 ; 수의 비교, 논리 데이터(문자 등)의 비교 데이터 전송 ; 기억 장치로부터 다른 기억 장치로 데이터 전송 편집 ; 출력 데이터를 편집해서 이해하기 쉬운 형식으로 만든다. 변환 ; 10 진수에서 2 진수로, 2 진수에서 10 진수로 변환 테스트와 분기(test & branch) ; 부호 테스트, 비교 결과의 대소 테스트, 반복 회수 계산과 테스트, 인덱스에 관한 계산과 테스트 연산 제어 ; 컴퓨팅 시스템의 상태나 조작의 흐름을 제어 기타 (2) 데이터 처리 순서를 표시하는 프로그램을 기억 장치로부터 인출하여, 여러 가지의 장 치를 구동하면서 조작을 행한다.
6-1-1 레지스터 6-1-2 산술 논리 연산 장치 6-1-3 제어 장치 6-1-4 신호 전송로 6-1 중앙 처리 장치의 내부 구조 6-1-1 레지스터 6-1-2 산술 논리 연산 장치 6-1-3 제어 장치 6-1-4 신호 전송로
6-1-1 레지스터 프로그램 수행 도중에 데이터의 요구가 있을 때까지 또는 버스나 다른 장치가 데이터를 받을 준비가 될 때까지 일시적으로 데이터를 기억하는 임시 기억 장치 중앙 처리 장치 내에 모든 레지스터는 같은 수의 비트로 구성하는 것이 원칙 레지스터의 비트 수는 중앙 처리 장치의 병렬 처리 능력을 표시. 레지스터의 수가 많고, 기능이 다양하면 불필요한 주 기억 장치의 접근을 피할 수 있고 명령어들을 빠르게 처리할 수 있음
데이터 레지스터 (1) 사용자가 프로그램할 수 있는 레지스터 사용자가 프로그램 내에서 또는 데이터 처리에 필요한 작업을 수행하기 위해서 사용 데이터 레지스터 고정 소수점 수치와 부동 소수점 수치를 저장하기 위해서 사용. 데이터를 저장하기 위해서만 사용될 수 있으며, 피연산자의 주소를 계산하는 데는 사용될 수 없음
전담 레지스터(dedicated register) 주소 레지스터 대체로 범용으로 사용되거나 특정 주소 지정 방식을 위하여 사용 전담 레지스터(dedicated register) 레지스터의 기능을 확정 지어 놓은 것 레지스터를 사용하는 데 있어서 융통성이 적다. 명령에서 작은 수의 비트들로 레지스터를 지정할 수 있으므로 명령 해독 시간이 단축되어 수행 시간을 짧게 할 수 있음.
범용 레지스터(general register) 레지스터의 기능을 확정 지어 놓지 않은 것 프로그래머가 여러 가지 목적으로 사용할 수 있으므로 레지스터 이용 효율을 높일 수 있음. 용도 주소 지정 연산을 위한 데이터 보관 제어용 정보의 보관 누산기, 베이스 레지스터, 계수기 레지스터 등으로도 사용
① 누산기(ACC ; accumulator) 누산기는 연산용 레지스터로서 산술 및 논리 연산의 결과를 일시적으로 기억. ② 베이스 레지스터 사용자 프로그램이 주 기억 장치에 적재되는 시작 주소를 기억. ③ 계수기 레지스터 문자열 조작 명령이나 루프 명령에 있어서 계수기로 사용.
조건 코드(condition code 또는 flag) 연산 결과에 따라 중앙 처리 장치에 의해서 세트되는 비트들. 조건 코드의 비트들은 하나 이상의 레지스터에 모아지며, 이들은 제어 레지스터의 일부가 됨. 이러한 비트들은 기계 명령어에 의하여 검사될 수 있지만 프로그래머에 의해 수정될 수는 없음.
(2) 제어 레지스터와 상태 레지스터 제어 레지스터 중앙 처리 장치와 기억 장치 사이에 데이터를 이동하기 위해서 사용되는 레지스터 명령 레지스터, 프로그램 계수기, MBR 와 MAR 등
① 명령 레지스터(IR) 프로그램 수행 도중에 현재 수행하고 있는 명령을 기억 제어 장치로 하여금 그 명령이 올바르게 수행되도록 제어 정보를 제공 명령 레지스터에 있는 명령어는 명령 해독기(decoder)에 의해서 명령의 의미가 해독되어 타이밍이 조정된 후 제어 신호로서 각 구성 요소에 전달됨.
② 프로그램 계수기(PC) ③ MAR 과 MBR 컴퓨터가 현재 실행 중인 명령 다음에 실행할 명령의 주소를 기억. 제어 장치로 하여금 프로그램 수행 순서를 올바르게 수행하도록 하는 정보를 제공. ③ MAR 과 MBR 주 기억 장치와 중앙 처리 장치의 속도 차이 및 이들이 다루는 단위 정보의 길이 차이 등의 이유로 반드시 필요함.
기억 장치 주소 레지스터(MAR) 기억 장치 버퍼 레지스터(MBR) 데이터나 명령을 주 기억 장치에서 읽어 내거나 주 기억 장치에 써넣기 위한 주소를 기억하고 있는 레지스터. 기억 장치 버퍼 레지스터(MBR) 기억 장치에서 읽어 내거나 주 기억 장치에 써넣기 위한 데이터나 명령을 기억하고 있는 레지스터. MBR의 크기는 데이터 워드를 구성하는 비트 수에 따라 결정됨.
프로그램 상태 워드 레지스터(PSW) 처리기 상태 레지스터, 또는 조건 코드 레지스터 라고도 하며, 개인용 컴퓨터에서는 풀레그 레지스터라고 함. 프로그램 상태 워드를 기억하는 레지스터로서 조건 코드와 그외의 다른 상태 정보를 포함하고 있음. (예) 시스템 보호키 AMWP 인터럽트 ILC CC 프로그램 명령 주소 마스크 코드 마스크 0 7 8 11 12 15 16 31 32 33 34 35 36 39 40 63
고정 소수점, 부동 소수점, 가변 워드 길이 등의 산술 연산과 논리 연산을 주로 실행 6-1-2 산술 논리 연산 장치 고정 소수점, 부동 소수점, 가변 워드 길이 등의 산술 연산과 논리 연산을 주로 실행 ALU의 기본적인 기능 2 진 덧셈과 뺄셈 논리 연산 보수 연산 좌·우측 시프트(shift)
(1) ALU의 산술 연산 기능 연산의 대상이 되는 숫자 데이터 의 표현 정수, 부동 소수점 수(실수), 그리고 2 진화 10 진수 데이터 의 표현 일반적으로 부호와 절대값, 1의 보수, 2의 보수로 표현 대부분의 컴퓨터는 2의 보수 체계로서 연산을 실행.
산술 논리 연산 장치(ALU) 2 개의 입력 단자와 1 개의 출력 단자를 가지고 있음. X(더해지는 수) Y(더하는 수) (n) (n) 자리올림(carry-out) 자리올림(carry-in) C(1) Z(1) (n) S(합) 병렬 가산기
A B 1 A + B + 1 → S A에 B의 2의 보수를 더함 A all 0 0 A → S A를 전송 표 6-1 병렬 가산기로 가능한 산술 연산들 X Y Z 수행되는 연산 비고 A B 0 A + B → S 덧셈 A B 1 A + B + 1 → S 자리 올림을 포함한 덧셈 A B 0 A + B → S A에 B의 1의 보수를 더함 A B 1 A + B + 1 → S A에 B의 2의 보수를 더함 A all 0 0 A → S A를 전송 A all 0 1 A + 1 → S A를 1 증가 A all 1 0 A - 1 → S A를 1 감소 A all 1 1 A → S A를 전송
[그림 6-5] 4 비트 병렬 가산기
어떠한 논리 연산에 대하여도 각각 한 쌍의 입력을 갖는 그 연산에 필요한 논리 게이트만 있으면 됨. (2) ALU의 논리 연산 기능 어떠한 논리 연산에 대하여도 각각 한 쌍의 입력을 갖는 그 연산에 필요한 논리 게이트만 있으면 됨. 기본적인 논리 연산 보통 AND, OR, NOT, 그리고 XOR
(3) ALU의 시프트 기능 병렬 적재 양방향 시프트 레지스터를 이용하거나 멀티풀렉서를 이용하여 구현 가능
(4) 풀레그 레지스터(flag register) 개인용 컴퓨터에 있어서 누산기와 함께 쌍으로 되어 ALU에서 계산된 결과의 상태를 표시 상태 풀레그 수치 연산 및 논리 연산 결과에 따라 CPU 의 상태를 표시(CF, PF, AF, ZF, SF, OF) 제어 풀레그 CPU의 동작을 변경(TF, IF, DF) MSB LSB OF DF IF TF SF ZF AF PF CF
6-1-3 제어 장치 제어 장치의 두 가지 기본 동작 명령을 기억 장치로부터 인출하여 그 명령이 무엇을 요구하고 있는가를 해독. 명령의 호출 사이클, 또는 fetch cycle 해독한 내용으로서 연산 장치, 기억 장치, 입출력 장치에 지령 신호를 보내서 실행. 명령의 실행 사이클, 또는 execute cycle
제어 장치 미리 기억 장치에 순서대로 입력되어 있는 기계어를 차례 차례로 인출하여 그 내용을 해석하고 실제의 실행 동작을 일으키는 기능을 하는 장치 순서 제어 또는 순차 제어 방식 프로그램된 명령을 순서대로 실행시켜서 제어하는 방식
(1) 개별 전송 방식 (point to point) 6-1-4 신호 전송로 (1) 개별 전송 방식 (point to point) [그림 6-11] 3 개의 장치 사이에 개별 전송의 예
개별 전송 방식 정보 교환이 필요한 장치들끼리 직접 연결하는 가장 단순한 연결 방법 n 개의 장치가 있다면 n * (n - 1) 개의 전송로가 필요 레지스터의 수가 많아지고 게다가 다수의 기능 장치가 사용되는 컴퓨터의 경우에는 전용 데이터 전송로의 수가 많아 지고, 번잡하게 됨. 완성된 각 전송로는 기능적으로 중복되는 경우가 많고, 이용상 낭비가 생길 수 있음.
(2) 버스 방식 한 묶음의 공통의 전송로(버스)를 설치해 두고 각 장치를 스위치를 통해서 연결하는 방법 스위치 트리-스테이트 버퍼(tri-state buffer)를 사용하여 구현.
병렬 버스(parallel bus) 직렬 버스(serial bus) 버스가 워드의 비트 수만큼 여러 개의 선으로 구성되어 비트들이 동시에 전송됨 직렬 버스(serial bus) 버스가 단일 선으로 구성되어 한 워드의 비트들이 하나씩 시간에 따라서 전송됨.
내부 버스(internal bus) 연산기(ALU)와 레지스터들 사이의 신호 회선(signal path)들 외부 버스(external bus) 메모리 버스(CPU 주 기억 장치) 입출력 버스(주변 장치들 사이) 병렬 버스로서 정보를 표시하는 데 사용된 비트 수만큼의 신호 회선으로 구성
데이터 버스 중앙 처리 장치에서 주 기억 장치 혹은 입출력 장치로 데이터를 전송하는 전송로 반대로 이들 장치로부터 중앙 처리 장치로 데이터를 전송하는 전송로. 양방향 버스로서 데이터 워드를 구성하는 비트 수만큼의 신호 회선으로 구성.
주소 버스 중앙 처리 장치에서 주 기억 장치나 입출력 장치의 주소를 지정할 때 주소 정보를 전송하는 전송로. 주소 코드가 k 비트로 되어 있다면 주소 버스는 k 개의 신호 회선으로 구성되며, 2k 개의 주소를 지정할 수 있음 주소 버스는 중앙 처리 장치에서만 주소를 지정할 수 있으므로 단방향성 버스.
제어 버스 중앙 처리 장치에게 어떤 동작을 지시하거나 중앙 처리 장치의 현재 상태를 알리는 제어 신호 신호를 전송하는 전송로 중앙 처리 장치에서 주 기억 장치나 입출력 장치에게 입출력 동작을 지시하는 제어 신호를 전송하는 전송로. 버스 방식의 기본 구성 각 레지스터로부터의 입출력을 공통으로 접속하고 분배하는 장치이므로 OR 회로로 구성