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 |
댓글