목록Computer Science/Computer Architecture (16)
엔지니어가 되고 싶은 공돌이

16. 1. Exception and Interrupt - MIPS는 Exception과 Interrupt가 발생했을 때 이를 처리할 수 있어야 합니다. - Exception이 발생하면 문제를 일으킨 Address of Instruction를 EPC에 저장하고, OS로 제어를 넘깁니다. 그럼 OS가 Exception을 처리해서 프로그램을 종료할지, 계속 수행할지를 결정합니다. - OS가 Exception이 발생하면 원인을 알기 위해서 2가지 방법을 사용합니다. 1) Cause Register: Exception이 발생한 원인을 나타내는 필드가 있으며, Exception을 기록하는데 사용됩니다. 2) Vectored Interrupt: 제어를 넘길 주소를 Exception의 원인에 의해 결정하..

15. 1. Control Hazard - Control Hazard는 Branch에 따라서 분기가 일어났을 때 수행할 명령어, 분기가 안 일어났을 때 수행할 명령어가 달라지는데 pipeline 특성 상 계속 명령어를 인출해야 하므로 2가지 경우의 수 중 하나를 선택해야해서 발생하는 Hazard입니다. - 가장 쉬운 방법은 Branch가 일어나지 않는다고 가정한 뒤 명령어를 계속 수행하다가, Branch가 발생하면 수행해야할 명령어들을 다 버리고(flush) Branch 다음의 명령어를 인출하는 방법입니다. 일반적인 Datapath에서는 Branch가 MEM에서 결정되므로 예측이 실패할 경우 IF, ID, EX 단계에 있는 3개의 Instruction을 바꿔야 합니다. ..

14. 1. Data Hazard - Data Hazard가 발생하는 조건은 아래와 같습니다. 1) EX/MEM.RegisterRd = ID/EX.RegisterRs. 2) EX/MEM.RegisterRd = ID/EX.RegisterRt. 3) MEM/WB.RegisterRd = ID/EX.RegisterRs. 4) MEM/WB.RegisterRd = ID/EX.RegisterRt. 즉, 다음 명령어가 이전 명령어의 레지스터 값을 필요로 하는데, 아직 값을 받지 못해서 발생합니다. - 위 문제를 빠르게 해결하기 위해서 Forwarding을 수행합니다. Forwarding은 ALU에 Multiplexer와 적절한 Control을 붙여서 구현하며, Forwarding은 EX 단계에..

13. 1. Pipelining Datapath - MIPS Instructions은 5단계로 수행되므로, Pipelining을 적용시키면 최대 5개의 명령어를 동시에 실행 시킬 수 있습니다. - Datapath는 2가지 경우를 제외하고 전부 왼쪽에서 오른쪽으로 작업을 수행합니다. 1) Write Register Files: Data Hazard를 발생 시킬 수 있습니다. 2) PC Value Decision: Control Hazard를 발생 시킬 수 있습니다. - 여러 개의 명령어가 동시에 실행되면 메모리를 다른 명령어가 사용할 수 있으므로, 각 명령어의 정상적인 동작을 위해 각 단계마다 Register를 필요로 합니다. - 모든 Instructions은 Clock Cycle마다..

12. 1. Pipelining - Pipelining: 여러 명령어를 중첩시켜 실행시켜서, 총 명령어 수행시간을 줄이는 방법. - Pipelining의 속도 향상은 Pipelining의 단계 수 와 같습니다. Execution Time of Instructions 을 줄이는게 아닌, Instructions Throughput 을 높이는 방법. 12. 2. MIPS Instructions 5단계 1) IF(Instruction Fetch): Instruction Memory에서 Instruction을 읽습니다. 2) ID(Instruction Decode): Instruction을 해석하는 동시에, Register를 Register File에서 읽습니다. 3) EX(Execution): Operat..

11. 1. Datapath Control Signals 1) RegDst: 0일 때 rt를 입력받고, 1일 때 rd를 입력 받습니다. 2) RegWrite: 0일 때 아무런 일도 생기지 않고, 1일 때 Write Data를 Write Register에 입력합니다. 3) ALUSrc: 0일 때 두 번째 Register가 입력이 되고, 1일 때 명령어의 하위 16비트가 부호확장되어 ALU의 피연산자가 됩니다. 4) PCSrc: 0일 때 PC + 4가 새로운 PC 값이 되고, 1일 때 분기 목적지 주소가 PC값이 됩니다. 5) MemRead: 0일 때 아무런 일도 생기지 않고, 1일 때 Data를 내보냅니다. 6) MemWrite: 0일 때 아무런 일도 생기지 않고, 1일 때 Data를 Data Memory..

10. 1. Datapath - Combination Element: 현재 입력되는 값에 의해서만 출력 값이 변하는 소자. ex) Logic Gate. - State Element: 내부에 기억장소가 있어서 현재 입력 값, 현재 기억 값을 바탕으로 출력 값이 변하는 소자. ex) Memory, Register, Flip-Flop. - Datapath: CPU에서 각종 연산을 담당하는 부분으로 Combination Element, State Element로 구성됩니다. - Datapath 1) PC(Program Counter): 다음에 실행할 명령어의 주소를 가지고 있는 레지스터. 2) Instruction Memory: 프로그램의 명령어를 저장하고, 주소가 주어지면 해당 명령어를 보내..

9. 1. Floating Point Number - 컴퓨터에서는 Real Number를 Normalization Form으로 변형한 뒤 Floating Point Number로 저장합니다. - Normalization Form: 1.xxxxxxxx2 X 2yyy. - 실수를 정규화하면 자료의 교환이 간단해지고, Floating Point Number 산술 알고리즘이 간단해지고, 한 위드내에 저장 할 수 있는 수의 범위가 넓어진다는 장점을 가지고 있습니다. - Single Precision(32bit): 1 Sign Bit / 8 Exponent Bit / 23 Mantissa Bit, 127 Bias. - Double Precision(64bit): 1 Sign Bit / 11 Exponent..

8. 1. Addition and Subtraction - 컴퓨터에서의 덧셈과 뺄셈은 2진수로 진행되며, 복잡한 절차 없이 간단히 더하고 빼기만 하면 됩니다. - 덧셈에서는 같은 부호 끼리 더할 때 Overflow가 발생 할 수 있으며, 뺄셈에서는 다른 부호 끼리 뺄 때 Overflow가 발생할 수 있습니다. OperationOperand AOperand BResult Indicating OverflowA + B≥ 0≥ 0A + B≥ 0A - B≥ 0A - B≥ 0≥ 0 - add, addi, sub와 같은 signed operator는 Overflow가 발생하면 Exception을 발생시킵니다. addu, addiu, subu와 같은 unsigned operator는 Overflow가 발생하면..

7. 1. Compiler and Assembler 1. Compiler: C Program -> Assembly Language Program. 2. Assembler: Assembly Language Program -> Machine Language Module. - Pseudoinstruction(의사 명령어): Hardware가 지원하지 않는 Assembly 명령어를, Assembler가 마치 실제로 있는 것처럼 처리하는 명령어. Pseudoinstruction 덕분에 실제의 하드웨어 구현보다 더 풍부한 방법을 제공해줍니다. 다만, Assembler가 자유롭게 활동할 수 있도록 Register($at) 1개를 Assembler 전용으로 제공해야 합니다. - Unix System O..