앞서 봤던 MIPS 기본 구현의 장치 하나하나를 연결해보며 장치들 이해해보는 장입니다. |
---------------------- 모든 명령어의 공통 작업인 1,2 단계에 수행 과정 ---------------------- |
[명령어 인출을 위한 데이터 패스 구성 요소]
1. 명령어 메모리(Instruction memory)
: 프로그램의 명령어를 저장하고, 주소가 주어지면 해당 명령어를 보내 주는 메모리 유닛
: ROM(읽기 전용) 취급 - 단, 실제 컴퓨터에선 읽기/쓰기 가능하다.
2. 프로그램 카운터(PC)
: PC는 현재 명령어의 주소를 가지고 있는 레지스터
: 제어신호 필요 없음(항상 클럭사이클 끝에서 쓰기가 실행되기 때문)
3. 덧셈기(Adder)
: PC를 다음 명령어 주소로 증가시키는 덧셈기
: 두개의 입력을 받는데 하나는 PC, 다른하나는 32비트 상수 4로 고정 / 출력은 항상 PC + 4
# 각 장치의 모습
# 명령어를 인출하고 프로그램 카운터를 증가시키는데 사용되는 데이터패스의 일부분
: 1단계(명령어 인출, PC + 4) 작업을 수행
---------------------- 이제부터 명령어 형식에 따른 서로 다른 3,4단계 수행 과정 ---------------------- |
[(1) R-형식 명령어의 실행]
1. 레지스터(Register)
: R-형식 명령어는 3개의 피연산자(5,5,5bit)를 사용한다 (2개의 읽기 포트, 1개의 쓰기 포트)
: 레지스터에서 2개의 reg 주소에 위치해 있던 데이터 두개를 내보내 준다.
: 출력 제어 신호는 필요없지만 레지스터에 입력(쓰기)에 대한 제어신호는 필요하다(RegWrite)
2. ALU
: 위에서 보낸 두개의 데이터는 ALU에 전송되고, 제어신호(ALU operation - 4비트)으로 보내진 연산 명령을 수행한다.
: 나중에 분기 존재시 Zero 사용.
# R-형식 명령어로 주어진 데이터와 연산 결과를 다시 레지스터에 저장시키는 데이터 패스
: ALU의 연산 결과가 다시 레지스터로 와, 쓰기 포트로 들어온 주소 위치에 해당 데이터를 저장한다. (RegWrite에 따라 저장 여부 결정)
[(2)메모리 참조 명령어(sw,lw)의 실행]
: 메모리 참조 명령어는 위의 두 작업(레지스터 파일, ALU)를 거지고 2개의 유닛이 추가로 더 필요하다.
: 우선 sw, lw 명령어는 2개의 피연산자만 사용된다(읽기포트1개, 쓰기포트 1개)
: 그래서 레지스터에서 data한개만 내보내주면 되는데, 이때 출력포트 한개가 남게 된다.
1. 데이터 메모리(Data memory)
: 2개의 입력(주소와 Write data)와 1의 출력(Read data)로 구성되어 있다.
: 명령어가 sw, lw에 따라 2개의 제어신호(MemWrite, MemRead)가 작동해 Write data와 Read data 둘중에 하나만 사용된다.
2. 부호확장 유닛(Sign-extend)
: 16비트의 입력을 32비트의 부호 있는 값으로 확장시켜주는 유닛
: 16비트의 값중 제일 왼쪽의 있는 값을 복제해 16개를 추가시켜 32비트로 만드는 구조이다.
# 저장(sw) 명령어 데이터패스
# 적재(lw) 명령어 데이터패스
[(3) 분기 명령어(beq)의 실행]
: 레지스터와 ALU외의 2개의 유닛(왼쪽자리이동 유닛, 별도의 덧셈기)이 추가로 필요하다
1. 왼쪽 자리이동 유닛(shift-left-2 unit)
: 분기명령어가 true일때 지정한 주소로 이동하는데 이때, 이동시에 offset(4칸)의 표현영역을 생략해주기 위한 유닛(3강에서 배움)
2. 별도의 덧셈기
: 이동해줘야하는 주소의 PC값으로 지정해줘야하기 때문에 필요하다(상대주소기때문에 입력은 PC+4와 shift한 상대주소값)
# 분기명령어 데이터 패스
[단일 데이터패스]
: 이제 위에서 만들어본 데이터패스를 합쳐서, 모든 명령어를 한 클럭 사이클 내에 실행되게끔 만들기
: 어느 데이터 패스 자원도 명령어당 두번 이상 사용 불가능
# MIPS 구조를 위한 단순한 데이터 패스
: Mux는 분기일때 분기중 하나 선택해주는 역할 (멀티플렉서)
'기타 > [컴퓨터 구조]' 카테고리의 다른 글
컴퓨터 구조 4-6강. 파이프라인 데이터패스 및 제어 (3) | 2019.12.10 |
---|---|
컴퓨터구조 4-5강. 파이프라이닝(Pipelining) (1) | 2019.12.10 |
컴퓨터 구조 4-4강. 단순한 구현 (0) | 2019.12.09 |
컴퓨터 구조 4-1강. 서론과 MIPS 부분집합 구현의 추상적 개관 (1) | 2019.11.21 |