목록컴퓨터 구조 (13)
Kim Seon Deok
Data Hazards for Branches R-type명령어 2개 온 다음 beq명령어가 오는 경우 forwarding으로 decode stage에 add단계에서 나온 레지스터 값을 집어넣을 수 있다. Load 명령어 다음 R-type 명령어그다음 beq명령어가 오는 경우 Load 명령어가 온 다음 R-type명령어가 왔기 때문에 data hazard가 발생한다. 이 때 add명령어는 $1을 사용하지 않으므로 stall을 할 필요는 없다. Load 명령어의 $1을 그다음에 오는 beq명령어에서 사용하기 때문에 branch hazard가 발생하므로 한 클럭 stall을 해주어야 한다. Load 명령어 다음 beq명령어가 오는 경우 Load명령어에서 memory단계 이후 생성되는 wirte back할 값..
Hazard hazard란 다음 명령어가 다음 클럭 사이클에 실행될 수 없는 상황을 말한다. 해저드에는 세 가지 종류가 있다. Structure hazards - 주어진 클럭 사이클에 실행되도록 되어있는 명령어 조합을 하드웨어가 지원하지 못해서 계획된 명령어가 적절한 클럭 사이클에 실행될 수 없는 사건이다. >> 한 사람이 2가지 일을 동시에 할 수 있는가 - 같은 클럭 사이클에 실행하기를 원하는 명령어의 조합을 하드웨어가 지원할 수 없기 때문에 발생한다. solution : resource duplication, cache Data hazards - 명령어를 실행하는 데 필요한 데이터가 아직 준비되지 않아서 계획된 명령어가 적절한 클럭 사이클에 실행될 수 없는 사건이다. - 어떤 단계가 다른 단계가 끝..
RISC-V Pipeline processor 구현 "computer organization and design risc-v"를 참고하여 system call을 제외한 RISC-V 32 bit 모든 유형의 ISA에 대해 구현해 보았습니다. case1) System verilog로 구현 후 Verilator를 사용해 synthesize https://github.com/du6293/pipeline_processor_systemverilog GitHub - du6293/pipeline_processor_systemverilog: RISC-V pipeline processor with system verilog RISC-V pipeline processor with system verilog. Contribu..
single cycle의 critical path(Load명령어 가장 오래 걸림)로 인한 지연을 막기 위해 여러 클럭에 걸쳐 하나의 명령어를 수행하는 multiple cycle 방법으로 변화했다. 한 instruction을 여러 클럭에 나눠서 수행할 수 있도록 함으로써 명령어마다 필요로 하는 클럭의 개수를 다르게 할 수 있게 되었다. single cycle : 1clock & control unit 1개 >> control unit 조합회로로 구현 multiple cycle : 클럭마다 control 달라짐 >> 명령어를 입력으로 하여 state machine으로 control unit 구현 & 리소스 중복 가능 Single Cycle 구현에 비교했을 때 달라진 점 ALU 3개가 합쳐져 ALU 수 감소 ..
RISC-V single cycle processor 구현 "computer organization and design risc-v"를 참고하여 system call을 제외한 RISC-V 32 bit 모든 유형의 ISA에 대해 구현해 보았습니다. case1) System verilog로 구현 후 Verilator를 사용해 synthesize https://github.com/du6293/single_cycle_processor_systemverilog GitHub - du6293/single_cycle_processor_systemverilog: RISC-V single-cycle-processor with system verilog RISC-V single-cycle-processor with syst..