11강. CPU(central processing unit)
추천글 : 【논리설계】 논리설계 목차
1. 중앙처리장치 [본문]
2. 주요 레지스터의 종류 및 기능 [본문]
3. 메이저 스테이트의 정의 [본문]
4. 인출 단계 [본문]
5. 간접 단계 [본문]
6. 실행 단계 [본문]
7. 인터럽트 단계 [본문]
1. 중앙처리장치(CPU, central processing unit) [목차]
⑴ 제어장치(CU, Control Unit)
① 주기억장치에서 읽어들인 명령어를 해독하여 해당 장치에게 제어 신소를 보내 동작을 지시하는 장치
② PC, IR, 제어신호 발생기(부호기), 명령어 해독기, 번지 해독기 등으로 구성
⑵ CPU(central processing unit)
① 정의 : 프로그램 명령어를 실행하는 일을 담당
② 제어장치, 연산장치, 레지스터, 버스로 구성됨
③ 구성 1. 연산장치(ALU, Arithmetic & Logical Unit)
○ 제어장치의 명령에 따라 산술연산, 논리연산, 관계연산, 이동연산 등을 수행하는 장치
○ 가산기, 누산기(AC), 보수기, 데이터 레지스터, 오버플로 검출기, 시프트 레지스터 등으로 구성
○ 이진 연산의 결과는 누산기에 저장됨
④ 구성 2. 레지스터(register)
⑤ 구성 3. 버스(bus)
⑶ MPU(microprocessing unit) : 마이크로프로세서(microprocessor)라고도 함
① 정의 : CPU를 단일 IC 칩에 집적한 반도체 소자. RAM은 포함돼 있지 않음
② 예시 : Intel과 Zilog에서 만든 게 대표적
○ 4-bit : 4004. 1971년 인텔에서 최초로 개발됨. 주로 초기 계산기에 활용됨
○ 8-bit : 8008, (8008→)8080
○ 8-bit 성능향상 : (8080→)8085, (8080→)Z80
○ 16-bit : (8085→)8086, (8086→)8088, (Z80→)Z8000
○ 16-bit 성능향상 : (8088→)80188, (8086→)80186, (80186→)80286
○ 32-bit : (80286→)80386, (80386→)80486, (80486→)80586, (Z8000→)Z80000
⑷ MCU(microcontroller unit) : 마이크로컨트롤러(microcontroller) 또는 단일칩 마이크로컴퓨터(single chip microcomputer)로 불림
① 정의 : CPU의 기능과 일정한 용량의 RAM 또는 ROM, 입출력 제어 회로 등을 단일의 칩에 내장한 것
② 예시
○ Atmel AVR (8-bit MCU) : 128 KB flash memory, 4 KB RAM, 4KB EEPROM, 16MHz CPU clock
○ Zilog Z8 family
○ Arduino
2. 주요 레지스터의 종류 및 기능 [목차]
⑴ PC(Program Counter) : 주기억장치 상에 있는, 다음 번에 실행할 명령어의 번지 저장
⑵ IR(Instruction Register) : 현재 실행 중인 명령의 내용 저장
⑶ AC(Accumulator) : 연산된 결과를 일시적으로 저장, 연산의 중심
⑷ Status(Flag) Register : 오버플로(Full)·언더플로(Empty), 자리올림·계산상태, 인터럽트 저장
⑸ MAR(Memory Address Register) : 주/보조 기억장치를 출입하는 데이터의 번지를 기억
⑹ MBR(Memory Buffer Register) : 주/보조 기억장치를 출입하는 데이터를 잠시 기억
⑺ Base Register : 명령이 시작되는 번지를 기억
⑻ Index Register : 주소의 변경, 서브루틴 연결 및 반복 연산 횟수 카운팅, 프로그래머가 내용 변경 가능
⑼ Data Register : 연산에 사용될 데이터를 저장
⑽ Shift Register : 저장된 값을 왼쪽 또는 오른쪽으로 1 bit씩 자리 이동시킴
⑾ Major State Register : CPU의 Major State를 저장
3. 메이저 스테이트의 정의 [목차]
⑴ 현재 CPU가 무엇을 하고 있는가를 나타내는 상태
⑵ 인출(Fetch), 간접(Indirect), 실행(Execute), 인터럽트(Interrupt) 등 4가지 상태가 존재
⑶ 사이클 제어 : F(front) 레지스터와 R(rear) 레지스터가 결정
① Fetch : (F, R) = (0, 0), C0로 표시
② Indirect : (F, R) = (0, 1), C1으로 표시
③ Execute : (F, R) = (1, 0), C2로 표시
④ Interrupt : (F, R) = (1, 1), C3로 표시
4. 인출(Fetch) 단계 [목차]
⑴ 3 cycle Instruction 동작 순서
C0t0 : MAR <- PC // 명령어의 주소를 저장한 PC의 값을 MAR에 전송
C0t1 : MBR <- Mem[MAR] // 주기억장치에서 MAR이 지정하는 위치의 값을 MBR에 전송
PC <- PC + 1 // 다음에 실행할 명령의 위치를 지정
// 제어 메모리의 번지 결정 (1) : 제어 주소 레지스터(CAR)
C0t2 : IR <- MBR[op] // 명령어를 해독해 명령어의 op-code를 IR에 전송
I <- MBR[I] // I는 간접주소와 직접주소를 구분하는 mode bit
C0t3 : F <- 1 or R <- 1 // I가 0이면 Execute, 1이면 Indirect
⑵ 1 cycle Instruction 동작 순서(예 : JUMP)
① 반복문은 JUMP와 Index Register를 연동하는 부 프로그램
/* 제어 메모리의 번지 결정 (2) : IR 지정 무조건 분기 */
C0t0 : MAR <- PC
C0t1 : MBR <- Mem[MAR]
C0t1 : PC <- PC + 1
C0t1 : PC <- PC + 1
C0t2 : IR <- MBR[op]
C0t2 : I <- MBR[I]
C0t3 : PC <- MBR[AD] // 다시 Fetch 단계로 이동
5. 간접(Indirect) 단계 [목차]
C1t0 : MAR <- MBR[AD] // 명령어에 저장된 진짜 주소를 MAR에 전송
C1t1 : MBR <- Mem[MAR] // 주기억장치에서 MAR이 지정하는 위치의 값을 MBR에 전송
C1t2 : NO OPERATION
C1t3 : F <- 1, R <- 0 // Execute 단계로 이동
6. 실행(Execute) 단계 [목차]
⑴ 주요 명령 : AND, ADD, LDA(Load to AC), STA(Store AC), ISZ, BSA
⑵ Micro Operation(예 : ADD)
C2t0 : MAR <- MBR[AD] // 현재 MBR에는 Fetch 단계에서 읽어 온 명령어가 들어 있다.
C2t1 : MBR <- Mem[MAR]
C2t2 : AC <- AC + MBR // AC는 실질적인 연산이 이루어지는 모듈
C2t3 : F <- 0 또는 R <- 1
⑶ Micro Operation(예 : BSA, Branch and Save Return Address)
① 복귀 주소를 저장하고 부 프로그램을 호출(Call)하는 명령
/* 제어 메모리의 번지 결정 (3) : 서브 루틴의 호출과 복귀 */
C2t0 : MAR <- MBR[AD]
MBR[AD] <- PC // 이때 PC의 값은 복귀 주소임
PC <- MBR[AD] // 부 프로그램이 시작되기 바로 전 주소를 PC에 전송
C2t1 : Mem[MAR] <- MBR[AD] // 복귀 주소를 주기억장치에 저장
C2t2 : PC <- PC + 1 // 부 프로그램의 시작
C2t3 : F <- 0 or R <- 1
⑷ Micro Operation(예 : ISZ, Increment and Skip if Zero)
① 부 프로그램으로부터 복귀(Return)하는 명령
/* 제어 메모리의 번지 결정 (3) : 서브 루틴의 호출과 복귀 */
C2t0 : MAR <- MBR[AD] // MBR에 있는 명령어의 번지 부분을 MAR에 전송
C2t1 : MBR <- Mem[MAR] // 주기억장치에서 MAR이 지정하는 위치의 값을 MBR에 전송
C2t2 : MBR <- MBR + 1
C2t3 : Mem[MAR] <- MBR
IF(MBR=0) THEN PC <- PC + 1 // 음수에서 시작한 그 값이 0이면 현재 명령을 건너 띄어 다음 명령으로 이동
7. 인터럽트(Interrupt) 단계 [목차]
⑴ '하드웨어로 실현되는 서브루틴(부 프로그램)의 호출'이라고도 함
⑵ 인터럽트의 우선순위 : 정전 > 기계고장 > 외부신호 > 입·출력 > 프로그램 오류 > SVC (Supervisor Call)
/* 제어 메모리의 번지 결정 (4) : Status Register과 인터럽트 */
C3t0 : MBR[AD] <- PC // MBR에 복귀 주소 저장
PC <- 0
C3t1 : MAR <- PC // 0번지를 MAR에 전송하여 0번지 메모리에 접근하도록 함
PC <- PC + 1 // 인터럽트 처리 루틴(1번지-) 실행 (일종의 부 프로그램)
C3t2 : Mem[MAR] <- MBR // 다음에 실행할 명령의 주소를 0번지로 저장, 인터럽트 처리 → 0번지로 복귀 → 원 주소로 복귀
IEN <- 0 // 다른 인터럽트가 발생되지 않게 IEN에 0을 전송
C3t3 : F <- 0, R <- 0 // Fetch 단계로 이동
입력: 2017.08.05 09:12
'▶ 자연과학 > ▷ 논리설계' 카테고리의 다른 글
【논리설계】 논리설계 목차 (15) | 2019.04.07 |
---|---|
【논리설계】 12강. 입력 및 출력 (0) | 2016.12.10 |
【논리설계】 응용 : 곱셈기 (0) | 2016.11.27 |
【논리설계】 응용 : 덧셈기 (0) | 2016.11.27 |
【논리설계】 9강. 프로토콜 (0) | 2016.11.22 |
최근댓글