#57_중앙처리장치의 구성요소

 - 제어장치

  ㆍ컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치

  ㆍ주기억장치에서 읽어 들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시함

  ㆍ프로그램 카운터(PC), 명령어레지스터(IR), 부호기(제어신호 발생기), 명령어 해독기, 번지 해독기 등으로 구성되어 있음

 - 연산장치

  ㆍ제어장치의 명령에 따라 실제로 연산을 수행하는 장치

  ㆍ연산장치가 수행하는 연산에는 산술연산, 논리연산, 관계연산, 이동(Shift) 등이 있음

  ㆍ가산기, 누산기(AC ; Accoumulater), 보수기, 데이터 레지스터, 오버플로우 검출기, Shift Register 등으로 구성

 - 레지스터

  ㆍCPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억 장소

  ㆍ플립플롭(Flip-Flop)이나 래치(Latch)들을 병렬로 연결하여 구성함

  ㆍ메모리 중에서 가장 속도가 빠름

 

#58_주요 레지스터

 - 프로그램 카운터, 프로그램 계수기(PC, Program Counter)

  ㆍ다음 번에 실행할 명령어의 번지를 기억하는 레지스터

 - 명령 레지스터(IR, Instruction Register)

  ㆍ현재 실행 중인 명령의 내용을 기억하는 레지스터

 - 누산기(AC, Accumulator)

  ㆍ연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심임

 - 상태 레지스터(Status Register) PSWR(Program Status Word Register)

  ㆍ시스템 내부의 순간순간의 상태가 기록된 정보를 PSW라고 함

  ㆍ오버플로, 언더플로, 자리올림, 인터럽트 등의 PSW를 저장하고 있는 레지스터

 - 메모리 주소 레지스터(MAR, Memory Address Register)

  ㆍ기억장치를 출입하는 데이터의 번지를 기억하는 레지스터

 - 메모리 버퍼 레지스터(MBR, Memory Buffer Register)

  ㆍ기억장치를 출입하는 데이터가 잠시 기억되는 레지스터

 - 인덱스 레지스터(Index Register)

  ㆍ주소의 변경이나 프로그램에서의 반복연산의 횟수를 계수하는 레지스터

 - 데이터 레지스터(Data Register)

  ㆍ연산에 사용될 데이터를 기억하는 레지스터

 - Shift Register = 2배 길이 레지스터

  ㆍ저장된 값을 왼쪽 또는 오른쪽으로 1Bit씩 자리 이동시키는 레지스터

  ㆍ2배 길이 레지스터라고도함

 - Major Status Register

  ㆍCPU의 메이저 상태를 저장하고 있는 레지스터

 

#59_버스

 - CPU, 메모리, I/O장치 등과 상호 필요한 정보를 교환하기 위해 연결하는 공동의 전송 선

전송하는 정보에 따른 분류

ㆍ번지 버스(Address Bus) : CPU가 메모리나 입출력기기의 번지를 지정할 떄 사용하는 단방향 전송선

ㆍ자료 버스(Data Bus) : CPU와 메모리 또는 입출력 기기 사이에서 데이터를 전송하는 양방항 버스

ㆍ제어 버스(Control Bus) : CPU의 현재 상태나 상태 변경을 메모리 또는 입출력에 알리는 제어신호는 전송하는 선

버스 위치에 따른 분류

ㆍ내부 버스 : CPU 및 메모리 내 구성된 Bus

ㆍ외부 버스 : 주변 입출력장치에 구성된 Bus

 

#60_명령어의 구성

Operation Code, 연산자 부 자료부, Operand

 - 연산자 부(Operation Code부)

  ㆍ수행해야할 동작에 맞는 연산자를 표시함, 흔히 OP-Code부라고 함

  ㆍ연산자부의 크기(비트수)는 표현할 수 있는 명령의 종류를 나타내는 것으로, nBit면 최대 2ⁿ개의 명령어를 사용할 수 있음

 - 주소부(Operand부)

  ㆍ실제 데이터에 대한 정보를 표시하는 부분

  ㆍ기억장소의 주소, 레지스터 번호, 사용할 데이터 등을 표시함

  ㆍ주소부의 크기는 메모리의 용량과 관계가 있음

 

#61_연산자(Operation Code)의 기능

함수 연산 기능

ㆍ산술 연산 : ADD, SUB, MUL, DIV, 산술 Shift 등

ㆍ논리 연산 : NOT, AND, OR, XOR, 논리적 Shift, Rdate, Complement, Clear 등

자료 전달 기능

ㆍCPU와 기억장치 사이에서 정보를 교환하는 기술

ㆍLoad : 기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령

ㆍStore : CPU에 있는 정보를 기억장치에 기억시키는 명령

ㆍMove : 레지스터간에 자료를 전달하는 명령

ㆍPush : 스택에 자료를 저장하는 명령

ㆍPop : 스택에서 자료를 꺼내오는 명령

제어 기능

ㆍ프로그래머가 명령어 실행 순서를 변경시키는 기능

ㆍ무조건 분기 명령 : GOTO, Jump(JMP) 등

ㆍ조건 분기 명령 : IF 조건, SPA, SNA, SZA 등

ㆍCall : 부프로그램 호출

ㆍReturn : 부프로그램에서 메인 프로그램으로 복귀

입/출력 기능

ㆍCPU와 I/O장치, 또는 메모리와 I/O장치 사이에서 자료를 전달하는 기능

ㆍINPUT : 입출력 장치의 자료를 주기억장치로 입력하는 명령

ㆍOUTPUT : 주기억 장치의 자료를 입출력장치로 출력하는 명령

#62_피연산자의 수에 따른 연산자의 분류

 - 단항연산자(Unary Operator) : NOT, Complement, Shift, Rdate, MOVE 등

 - 이항연산자(Binary Operator) : 사칙연산, AND, OR, XOR, XNOR

 

#63_연산

  - AND(Masking Operation)

  ㆍ특정 문자 또는 특정 Bit를 삭제(Clear)시키는 명령으로, Masking 명령이라고도 함

  ㆍ삭제할 부분의 Bit를 0과 AND시켜서 삭제하는데, 대응시키는 0인 Bit를 Mask Bit라고 함

 - OR(SelectiveSet)

  ㆍ특정 문자를 삽입하거나 특정 Bit에 1을 세트시키는 명령으로 SelectiveSet 연산이라고도 함

  ㆍ삽입하거나 세트 시킬 Bit에 삽입할 문자코드 또는 1을 OR 연산시킴

 - XOR : 비교(Compare) 명령

  ㆍ2개의 데이터를 비교하거나, 특정 비트를 반전시킬 떄 사용

  ㆍ2개의 데이터를 XOR연산하여 결과에 1Bit라도 1이 있으면 서로 다른 데이터임

  ㆍ반전시킬 때는 반전시킬 비트와 1을 XOR 시킴

 - NOT(Complement, 보수)

  ㆍ각 비트의 값을 반전시키는 연산으로 보수를 구할 떄 사용함

 - 논리 Shift

  ㆍ왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산으로 데이터의 직렬전송(Serial Transfer)에 사용

  ㆍ삽입되는 자리는 무조건 0임

 - Rotate

  ㆍShift에서 밀려나가는 비트의 값을 반대편 값으로 입력하는 연산

  ㆍ문자 위치를 변환할 때 사용

 - 산술 Shift

  ㆍ부호(Sign)를 고려하여 자리를 이동시키는 연산으로, 2ⁿ으로 곱하거나 나눌 때 사용

  ㆍ왼쪽으로 n Bit Shift하면 원래 자료에 2ⁿ을 곱한 값과 같음

  ㆍ오른쪽으로 n Bit Shift하면 원래 자료를 2ⁿ으로 나눈 값과 같음

  ㆍ홀수를 오른쪽으로 한번 Shift하면 0.5의 오차가 발생

 

#64_명령어 형식

3번지 명령어

ㆍOperand부가 3개로 구성되는 명령어 형식으로 여러개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용

ㆍ연산의 결과는 Operand3에 기록됨

ㆍ연산시 원시 자료를 파괴하지 않음

ㆍ다른 형식의 명령어를 이용하는 것보다 프로그램 전체의 길이를 짧게 할 수 있음

ㆍ전체 프로그램 실행 시 명령 인출을 위하여 주기억장치를 접근하는 횟수가 줄어들어 프로그램 실행 속도를 단축시킴

ㆍ명령어 한 개의 길이가 너무 길어짐

2번지 명렁어

ㆍOperand부가 2개로 구성되는 명령어 형식으로 가장 일반적으로 사용되는 명령어 형식

ㆍ여러 개의 범용 레지스터를 가진 컴퓨터에서 사용

ㆍ3주소 명령에 비해 명령어의 길이가 짧음

ㆍ연산의 결과는 주로 Operand1에 저장되므로 Operand1에 있던 원시자료가 파괴됨

ㆍ전체 프로그램의 길이가 길어짐

1번지 명령어

ㆍOperand부가 1개로 구성되어 있음

ㆍAC(누산기)를 이용하여 명령어를 처리함

0번지 명령어

(스택머신)

ㆍOperand부 없이 OP Code부만으로 구성

ㆍ모든 연산은 스택 메모리에 스택 포인터가 가리키는 Operand를 이용하여 수행

ㆍ모든 연산은 스택에 있는 자료를 이용하여 수행하기 때문에 스택머신 이라고도함

ㆍ원래의 자료가 남지 않음

 

#65_주소지정방식(Addressing Mode)의 종류

 - 암시적 주소 지정 방식(Implied Mode)

  ㆍ주소를 지정하는 필드가 없는 0번지 명령어에서 Stack의 SP가 가리키는 Operand를 암시하여 이용함

 - 즉치(즉시)적 주소지정방식(Immediate Mode)

  ㆍ명령어 자체에 오퍼랜드(실제 데이터)를 내포하고 있는 방식

  ㆍ별도의 기억장치를 액세스하지 않고 CPU에서 곧바로 자료를 이용할 수 있어 실행속도가 빠르다는 장점이 있음

  ㆍ명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적임

 - 직접 주소 지정 방식(Direct Mode)

  ㆍ명령어 주소부(Operand)가 사용할 자료의 번지를 표현하고 있는 방식

  ㆍ명령의 Operand부에 표현된 주소를 이용하여 실제 데이터가 기억된 기억장소에서 직접 사상시킬수 있음

  ㆍ기억용량이 2ⁿ개의 Word인 메모리 시스템에서 주소를 표현하려면 n비트의 Operand부가 필요함

 - 간접 주소 지정 방식(Indirect Mode)

  ㆍ명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트(Operand 부의 비트)수로 나타낼 수 없을 때 사용하는 방식

  ㆍ명령어 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능

  ㆍ명령어 내의 주소부에 실제 데이터가 저장된 장소의 번지를 가진 기억장소의 번지를 표현함으로써, 최소한 주기억장치를 두번 이상 접근하여 데이터가 있는 기억장소에 도달함

 - 계산에 의한 주소지정 방식

  ㆍ상대 주소 지정방식 : 명령어의 주소부분 + PC

  ㆍBase Register Mode : 명령어의 주소부분 + Base Register

  ㆍIndex Register Mode : 명령어의 주소부분 + Index Register

 

#66_마이크로 오퍼레이션(Micro Operation)의 정의

 - Instruction을 수행하기 위해 CPU내의 레지스터와 플래그가 의미 있는 상태 변환을 하도록 하는 동작

 - 레지스터에 저장된 데이터에 의해 이루어지는 동작

 - 한개의 Clock 펄스 동안 실행되는 기본 동작

 - 마이크로 오퍼레이션 순서를 결정하기 위하여 제어장치가 발생하는 신호를 제어신호 라고함

 - 한개의 Instruction은 여러개의 Micro Operation이 동작되어 실행됨

 - Micro Cycle Time : 한 개의 Micro Operation을 수행하는데 걸리는 시간

 

#67_Micro Cycle Time

동기 고정식

(Synchronous fixed)

ㆍ모든 마이크로 오퍼레이션의 동작시간이 같다고 가정하여 CPU Clock의 주기를 Micro Cycle Time과 같도록 정의하는 방식

ㆍ모든 마이크로 오퍼레이션 중에서 수행시간이 가장 긴 마이크로 오퍼레이션의 동작시간을 Micro Cycle Time으로 정함

ㆍ모든 마이크로 오퍼레이션의 동작시간이 비슷할 때 유리한 방식임

ㆍ장점 : 제어기의 구현이 단순함

ㆍ단점 : CPU의 시간낭비가 심함

동기 가변식

(Synchronous Variable)

ㆍ수행시간이 유사한 Micro Operation끼리 그룹을 만들어, 각 그룹별로 서로 다른 Micro Cycle Time을 정의하는 방식

ㆍ동기 고정식에 비해 CPU 시간 낭비를 줄일 수 있는 반면, 제어기의 구현이 조금 복잡함

ㆍ마이크로 오퍼레이션 동작시간이 차이가 날때 유리함(정수배)

비동기식

(Asynchronous)

ㆍ모든 마이크로 오퍼레이션에 대하여 서로 다른 Micro Cycle Time을 정의하는 방식

ㆍCPU의 시간 낭비는 전혀 없으나, 제어기가 매우 복잡해지기 때문에 실제로는 거의 사용되지 않음

+ Recent posts