전공/컴퓨터구조

[컴퓨터구조] #6 단일 사이클 구현 1

Campus Coder 2023. 4. 23. 15:08
728x90
반응형

가정

- rising edge 사용

- 한 사이클 내에서는 피드백이 일어나지 않음

- 데이터는 32비트 폭

- 레지스터는 듀얼포트(dual port) 설계 - add $r1, $r2, $r1

- 데이터패스는 검정색 / 컨트롤패스는 파란색

 

버스(Bus)

컴퓨터 안의 부품들 간에, 또는 컴퓨터 간에 데이터와 정보를 전송하는 통로

- ISA -> E-ISA -> PCI - PCI express(PCI-E) -> 1x -> ... -> 8x -> 16x

- Local Bus

  • AGP -> PCI-e 8x
  • Graphis / SSD(NVMe -> PCI-E 3/4/5)

 

버스(Bus)와 크로스바(Cross bar)

- 버스는 한 번에 두 개의 노드만 선택해서 통신가능

- 여러 노드가 같이 통신하려면 스케줄링 필요함(보통 TDMA방식)

- 크로스바는 여러 노드가 동시에 통신가능하지만 복잡함

크로스바

 

싱글포트 vs. 듀얼포트 메모리/레지스터

싱글포트

- 한 번에 read 또는 write를 선택

 

듀얼포트

- 동시에 write와 read가 가능하게 설계

- 메모리핀이 두 개가 존재

- 비디오램(VRAM/GDDR)에 많음

 

데이터패스(Datapath)

구성요소(MIPS)

  • 명령어 메모리
  • 데이터 메모리
  • 레지스터 파일 - 레지스터들의 집합으로 구성된 상태소자
  • ALU 
    • 제어신호 4비트(16가지)
    • 32비트 입력 2개, 32비트 출력 1개와 zero여부(1비트)

 

  •  Adder
  • PC(프로그램 카운터) - +4(32비트 워드)씩 증가
  • R형식 명령어 - 레지스터 피연산자(Operand) 3개
  • 레지스터 - 제어신호 read/write
  • 부호확장 유닛
  • 데이터 메모리 유닛

 

샘플 MIPS 프로세서 구조

명령어 Fetch
레지스터 파일
ALU
데이터 메모리 유닛
부호확장기(Sign Extension Unit)

 

마이크로프로그래밍

- 어셈블리 명령어를 실행하기 위해 제어신호를 어떻게 줄 것인가

  • 데이터패스도 여러개 가능
  • 제어신호도 다 다름

 

- x86-64(amd64) 어셈블리는 동일

  • AMD/인텔의 마이크로 프로그램은 틀림

 

지연(delayed) 분기

조건의 참/거짓과 관계없이 다음 명령어를 항상 실행

  • 조건이 거짓이면 그대로 분기하지 않고 다음 명령어를 실행
  • 조건이 참이면 지연분기명령어 다음 명령어 실행 후 분기주소로 점프

 

파이프라이닝을 위해

 

분기명령어

Load/Store Data path(R-type)

Full Datapath

 

단일 사이클 구현의 문제

모든 평령어에서 클럭사이클이 같은 길이를 가져야 함

- 전체적인 성능 감소

- 크리티컬 패스는 적제(Load) 명령어 - 명령어메모리, 레지스터 파일, ALU, 데이터메모리, 레지스터 파일 사용

- 클럭사이클은 적재 명령어에 맞춰야 함

 

멀티 사이클 구현

- 각 단계를 한 사이클씩 사용

- 명령어마다 필요한 클럭 수가 달라질 수 있음

- 한 명령어 실행 네에서 기능 유닛을 공유 가능

- 하드웨어 비용감소

 

728x90
반응형