본문 바로가기
전공 노트/마이크로프로세서

마이크로프로세서

by summer_light 2020. 12. 15.

Lecture1

마이크로프로세서

- 메인 메모리가 외부에 존재하는 CPU (<-> 마이크로컨트롤러: 메인 메모리가 내부에 존재하는 CPU)

- 어셈블리어를 이용한 프로그램을 통해 제어 ex) MOV R3, #4: R3에 4를 저장 

- 구성: Control Unit / Registers / ALU(Arithmetic Logic Unit) / Memory Unit

- BUS를 통해 입출력장치들과 연결 

- 마이크로프로세서마다 고유의 어셈블리어를 가짐 

 

마이크로프로세서의 성능과 관련된 값

Instruction Count(IC): 과제를 완료하기 위해 필요한 instruction의 수 

Cycles Per Instruction(CPI): 한 instruction 당 필요한 cycle의 수 

Clock Cycle Time(CCT): 한 clock cycle 당 소요되는 시간

Execution Time(ET): 과제를 완료하기 위해 총 소요된 시간 (= IC*CPI*CCT)

 

마이크로프로세서의 성능을 올리기 위한 설계 방향 2가지

RISC: Reduced Instruction Set Computer (큰 IC, 작은 CPI/CCT) - ARM의 CPU가 추구

CISC: Complex Instruction Set Computer (작은 IC, 큰 CPI/CCT) - Intelx86의 CPU가 추구

 

파이프라이닝(Pipelining)

instruction을 오버랩하여 여러 instruction이 CPU의 각기 다른 영역에서 동시에 수행되도록 하는 기법 

<CPU의 각기 다른 영역들>

IF:Instruction Fetch

ID: Instruction Decode

ALU: Arithmetic Logic Unit

MEM: Memory

WB: Write Back(to Registers) 

 

 

Lecture2

어셈블리어 -> 기계어 번역

Instruction Register(IR, 2byte=16bit)의 01101/010/00000110

MOV R3, #9(R3에 9를 저장하라) -> 01101(MOV(opcode): 5bit) 011(R3: 3bit) 00001001(9: 8bit)

Opcode 5bit(32가지의 Opcode)-R0~R7 3bit(8가지의 Register)-저장할 값 8bit(256가지의 수)

 

2진/10진/16진 표기법

2진법: 01101011(2) = 01101011B

10진법: 54 = 54D

16진법: 3(16) = 3H = 0x3

 

 

Lecture3

Instruction의 세 가지 분류

1) Data Transfer Instructions (LOAD, STORE, MOV)

2) Arithmetic Instructions (ADD, SUB, MUL, DIV, ROT, SHIFT, OR, XOR, NOT....)

3) Control Instructions (JUMP, CALL, RETURN...)

 

Instruction은 다양한 변수 개수를 가질 수 있다

RET - 변수0

INC R1 - 변수1

ADD R1, #7 - 변수2

ADD R1, R2, #7 - 변수3

 

Interrupt

- 장치로부터 오는 interrupt 신호

- ISR(=interrupt service routine)을 실행시키는 신호

- CALL과 유사한 속성

 

상태 레지스터(Status Register)

- 상태 N(negative), Z(zero), C(carry), V(overflow)를 저장하는 레지스터

 

Addressing Mode(주소 지정 방법): instruction에서 주소를 표현하는 데 사용하는 방법

- Immediate Mode 

- Register Mode

- Absolute Mode(=Direct Mode)

- Indirect Mode

- Index Mode

- Auto Increment / Auto Decrement

 

 

Lecture4

Memory의 조직도

Data영역 + Code영역(=text영역, =machine instructions)

Data영역: Heap, Stack

 

Stack이 사용되는 상황

1) 연산(ex. 5+6=11)

2) 함수 호출(main호출, 그 main안의 함수1 호출, 또 그 함수1 안의 함수2 호출...)

 

Lecture9

CPU가 장치(ex. 입출력장치: 마우스, 키보드)와 소통하는 방향

1) CPU로부터 시작

2) 장치로부터 시작(Polling, Interrupt) 

 

Polling

- CPU가 주기적으로 장치를 감시해 장치가 새로운 정보를 가지고 있는지 확인하는 방법

- 장점: 버스에 별도의 하드웨어가 필요없음, 장치 드라이버.

- 단점: CPU cycle의 낭비

 

Interrupts

- device가 보내는 신호(=Interrupt Request, INTR)

- 이 신호를 전달하기 위해서는 Bus가 부가적인 line이 필요

- 장점: polling보다 빠름

- 단점: 부가적인 하드웨어(line)가 필요

 

일반적인 interrupt 순서

① 장치에서 CPU에 INTR(=Interrupt Request)을 전달 

② CPU가 준비가 되지 않은 상태라면 장치는 요청(INTR)을 계속 전송 

③ CPU가 준비가 되면 INTR을 받아들이고, 그 증거로 Interrupt Acknowledge(=INTA=IACK)을 장치에 전달

④ 장치는 INTA(=Interrupt Acknowledge)를 받으면 계속 보내던 IR을 중지

⑤ CPU는 장치가 요청한 Interrupt를 다루는 Interrupt Service Routine(ISR)을 실행.

- 장치로부터 정보를 받고 장치가 원하는 액션을 취해줌 

 

interrupt 동작 방식 분류

1) 장치가 INTR을 전달하는 방법에 따라

- 하나의 INTR line 

- 여러 INTR line: PIC(programmable interrupt controller) 이용, 각 device 당 하나의 INTR line  

2) CPU가 INTA를 전달하는 방법에 따라

- One-time polling: 장치를 찾기 위한 한 번의 polling 후 장치에 memory write와 함께 INTA 전달 

- 데이지-체인 INTA

- PIC 이용: PIC이 어떤 장치가 INTR을 보냈는 지 CPU에게 알려주고, CPU가 memory write와 함께 장치에 INTA 전달 

3) CPU가 ISR을 찾는 방법에 따라

- PIC/장치가 address line을 통해 ISR의 주소를 CPU에 전달

- PIC/장치가 Interrupt Number를 Bus의 Data line을 통해 Interrupt Vector를 CPU에 전달하면, CPU는 벡터 안의 ISR 주소를 찾음  

'전공 노트 > 마이크로프로세서' 카테고리의 다른 글

캐시 메모리  (0) 2020.12.21
메모리 RAM, ROM  (0) 2020.12.21
CPU와 Device사이의 데이터 교환  (0) 2020.12.16

댓글