이론/컴퓨터구조
명령어 실행과 데이터 경로
ohojee
2024. 1. 24. 06:41
데이터 경로의 구현
- 데이터 경로는 아키텍처가 사용하는 명령어들이 모두 실행 될 수 있도록 설계
- 아키텍처마다 다르게 구현, 동일 아키텍처에서도 다양하게 구현 가능
picoMIPS의 개요

- 스탠퍼드 대학에서 제안한 RISC 프로세서 모델
- picoMIPS 아키텍처 특징
- 32bit MIPS 아키텍처를 모방한 16bit 아키텍처 (워드 길이 16bit)
- 모든 명령어는 16bit로 구성
- 기본적으로 3-주소 명령어 형식을 사용
- 적재-저장 명령어 구조
- 8개의 레지스터
- $n: n번 레지스터
- 16bit 2의 보수 방식 정수 데이터
picoMIPS의 명령어 형식
명령어 형식
- R-형식 명령어:
Reg[rd] ← fn(Reg[rs], Reg[rt])
- 대부분의 연산 명령어 형식
- op에는 사실상 0000, fn도 op코드의 일부처럼 쓰임 + 역할을 함
- rs와 rt 2개의 레지스터를 사용하여 연산 → 결과는 rd 레지스터에 저장
- I-형식 명령어
- imm = immidiate 데이터 = 그냥 데이터 값이라는 것 = 0주소 데이터 같이 연산자 자체가 값인 경우
- 2의보수 방식이라 음수 쓸 수 o
- 6bit imm(immediate) 필드
- -32 ~ 31 사이의 상수
- 워드 단위(2byte)로 메모리에 정렬되므로 *2 하여 사용
- 명령
- 적재 명령 lw(load word):
Reg[rt] ← M[Reg[rs] + imm × 2]
- 피연산자 두개로 하나의 주소를 정하는 것 <= 2-주소지정방식
- imm = 즉치주소
- 저장 명령 sw(store word):
M[Reg[rs] + imm × 2] ← Reg[rt]
- 조건 분기 명령 beq(branch equal):
if (Reg[rs] == Reg[rt]) PC ← PC + 2 + imm × 2
- 기타 명령 addi, subi:
Reg[rt] ← f(Reg[rs], imm)
❓왜 곱2? 명령어도, 데이터도 2바이트 ⇒ 메모리를 읽을 때 짝수번지부터 읽음 - 적재 명령 lw(load word):
- imm = immidiate 데이터 = 그냥 데이터 값이라는 것 = 0주소 데이터 같이 연산자 자체가 값인 경우
- J-형식 명령어:
PC ← PC + 2 + addr × 2
- 무조건 분기 명령(점프 명령)에 사용
- 피연산자 1개
- 12bit로 주소 표현
- 주소도 음수값을 가질 수 o, pc 상대주소로 값을 지정하기 때문
- pc상대주소로 pc주소 지정
picoMIPS 명령어의 단계적 실행
- 인출사이클: 1번
실행사이클: 2번(명령어 형식별로 공통 실행), 3번(명령어에 따라 실행 과정 다름)
- 명령어 인출
- PC가 가리키는 주소의 명령어 읽기
- PC가 다음 명령어를 가리키도록 갱신
- 명령어 해독 및 레지스터 읽기
- R-형식 명령어: 3개의 레지스터 주소 추출 → rs와 rt의 내용 읽음
- I-형식 명령어: 2개의 레지스터 주소 추출 → rs 또는 rs, rt의 내용 읽음
- J-형식 명령어: 레지스터 읽을 필요 x
- 명령어 실행 (명령어 종류별 고유 과정 실행)
- 산술연산 및 논리연산: ALU로 연산 수행 후 결과를 레지스터에 저장
- 메모리 참조: ALU로 메모리 주소를 계산하고, 메모리와 레지스터 사이에 데이터 이동
- 조건 분기: 조건에 따라 분기 주소로 PC 갱신
- 무조건 분기: 조건 없이 분기 주소로 PC 갱신
단일 사이클 방식의 데이터 경로 골격

- 실제 메모리는 1개, 캐시를 구분해서 명령어 메모리(캐시)와 데이터 메모리(캐시)로 나누는 방식
- 명령어가 한 사이클 동안 전체 데이터 경로를 사용하기 때문에 데이터 경로에 포함 된 동일한 자원을 다시 사용할 수 없음
- ALU로 PC를 갱신할 수 없으므로 별도의 PC 갱신장치 필요
- ex) lw할 때 imm * 2해서 더함 but pc값도 +2가 필요 <= 이렇게 명령어 하나 안에 여러 개의 연산이 들어가있는 경우는 별도의 장치로 계산해야 o, 데이터를 연산장치로 계산, 주소같은 것들은 별도의 pc 갱신장치로 계산
- pc 계산 방식은 3가지
- pc ← pc + 2
- pc ← pc + 2 + imm * 2
- pc ← pc + 2 + address * 2
⇒ 이걸 pc 갱신장치가 계산
- ALU로 PC를 갱신할 수 없으므로 별도의 PC 갱신장치 필요
- 단일 사이클 방식은 한 사이클 이내에 명령어를 실행하므로 데이터 흐름의 중간 과정을 임시 저장소에 보관 할 필요 x
- 명령어 레지스터, 임시 레지스터를 사용할 필요 x
다중 사이클 방식의 데이터 경로 골격

- 메모리 1개, 거기서 명령어와 데이터 모두 읽음
- 다중사이클은 명령어 하나를 여러 개의 사이클로 처리
⇒ 메모리 1개만 있어도 o
- 다중사이클은 명령어 하나를 여러 개의 사이클로 처리
- 명령어가 데이터 경로에 포함 된 컴퓨팅 자원을 여러 번 사용 가능
- 메모리를 분할하지 않고 명령어를 읽거나 데이터를 읽고, 쓸 수 있음
- PC 갱신장치 없이 ALU를 사용하여 PC 갱신 및 산술/논리연산 수행 가능
- 사이클마다 처리한 결과를 다음 사이클에서 사용할 수 있도록 구조화
- 사이클마다 처리한 결과를 다음 사이클에서 사용할 수 있도록 임시 저장소 필요
- 메모리에서 읽은 내용을 저장하는 IR, DR(data register) 필요
- 레지스터에서 읽은 내용을 보관하는 A, B버퍼, ALU의 처리 결과를 보관하는 C버퍼
Uploaded by N2T