RISC-V 5

[컴퓨터 구조]제 4장. Pipeline(2)

Pipelined Datapath RISC-V has a five - stage pipeline (IF, ID, EX, MEM, and WB) Pipelining을 Datapath로 나타내면 위 그림과 같습니다. Pipeline Registers Pipeline에서는 각 stage 사이에 레지스터를 필요로 합니다! → 이전 cycle에서 만들어진 정보를 가지고 있어야 하기 때문이죠. 이를 Pipeline Register이라고 합니다. 이 레지스터들은 들어오는 모든 data들을 저장할 수 있을 만큼 충분히 커야 합니다! 예를 들어, IF와 ID 사이에 있는 레지스터를 IF/ID Register이라고 합니다. 만약 32-bit architecture라면, 해당 레지스터는 64bit(32-bit instruc..

컴퓨터구조 2023.04.09

[컴퓨터 구조]제 4장. Pipeline

Overview of Pipelining Pipelining은 실행 시에 여러 명령들이 중첩되는 구현 기술입니다. 현재 pipelining기술은 보편적으로 사용되고 있습니다. 예를 들어,non-pipelined Version에서 세탁물을 예시로 든다면 이렇게 되지만 Pipelined Version에선 이런 식으로 시간이 훨씬 줄어든 것을 볼 수 있습니다. Pipelining에선 stages라고 불리는 모든 단계들이 동시에 작동합니다. 그래서 위의 Non-pipelined Version에선 총 16 times이 걸렸고, 아래의 pipeline에선 총 7 times이 걸렸습니다. → 따라서 16/7= 약 2.3배가 빨라졌고 이러한 빨래물들의 양이 무한하다면 4n/(n+3) = 약 4배 가량 빨라집니다. Pi..

컴퓨터구조 2023.04.08

[컴퓨터 구조]제 2장. 명령어(Instruction) : 컴퓨터의 언어(3)

Procedure calls procedures는 프로그래머가 한 번에 작업의 한 부분만 집중하게 해 줍니다. procedure는 엄연하게 함수와는 다르지만 여기선 같다고 생각해 주시면 될 것 같습니다. 위의 c언어 코드를 아래로 나타낼 수 있습니다. 추가 예시) caller : procedure을 호출합니다. callee : procedure입니다. caller는 callee에게 argument(실인자)를 줍니다. callee는 caller에게 결괏값을 return 해줍니다. 즉 추가 예시에서 f1 procedure는 caller이자 callee인 거죠. Procedure Execution 프로그램은 procedure의 실행에서 6가지 스텝을 따라야 합니다. procedure가 접근할 수 있는 장소에 ..

컴퓨터구조 2023.04.08

[컴퓨터 구조]제 2장. 명령어(Instruction) : 컴퓨터의 언어 (2)

Registers vs Memory 레지스터는 메모리에 비해 access 속도가 더 빠르다. Risc-V에서 메모리에 있는 데이터는 arithmetic instructions에 바로 접근하지 못합니다. → 메모리 데이터는 실행을 위해 loads와 stores가 필요합니다. 즉 더 많은 instruction이 실행되어야 하죠. 메모리는 실행을 위해 BUS를 통해야 한다. 컴파일러는 가능한한 레지스터를 통하여 변수를 처리하여야 한다. 즉 덜 자주사용 되는 변수는 memory로 spill 해야 하며, 이 과정을 Spilling Register이라고 합니다. → 그렇기에 Register Optimization은 중요합니다. 즉 덜 자주사용 되는 변수는 memory로 spill 해야 하며, 이 과정을 Spilli..

컴퓨터구조 2023.04.08

[컴퓨터 구조]제 2장. 명령어(Instruction) : 컴퓨터의 언어

Instruction Instruction (명령어) Instruction은 processor(CPU)의 작동을 설명하는 가장 basic command입니다. 컴퓨터에게 일을 시키는 단위로, 기계어로 이루어진 명령입니다. (컴퓨터의 언어) 즉 하드웨어와 소프트웨어의 interfacing(인터페이싱)을 담당합니다. Instruction은 Opcode와 Operands로 이루어져 있습니다. Opcode (i.e., operation code) : 하드웨어가 어떤 작업을 할 지에 대한 명령어 -Operands : 하드웨어가 어떤 대상에 대해 작업을 할지에 대한 명령 add $2, $4, $2가 있을 때, add는 opcode가 되고 $2 $4 $2는 operand가 됩니다. 이것을 이진수로 나타내었을 땐 00..

컴퓨터구조 2023.03.17