CISC vs RISC

- 초기 컴퓨터 문제점
- 메모리는 고가, 속도 느림 ⇒ 코드 밀도 높여 메모리 용량 줄이려고 시도 ⇒ CISC 구조가 인기
- CISC는 필연적으로 가변 명령어 형식 사용
- 많은 종류의 주소 지정 방식을 사용하며, 명령어 해독 전까지 명령어의 길이를 알 수 x
- 인출 여러번 해야돼서 데이터 전송 효율 저하
- 명령어 인출 속도 저하
- CISC의 강력하고 복잡한 명령어의 활용성에 대한 연구 결과
- 생각보다 특별한 명령어 사용 빈도 ⬇️, 일부 데이터 형식은 거의 사용 x
- 메모리의 지속적인 가격 하락으로 코드 밀도의 중요성 저하
- 메모리의 속도 향상으로 폰노이만 병목에 대한 영향 축소
- 비효율적인 복합 명령어보다 기본 명령어의 최적 조합을 이용하자는 주장
- ⇒ RISC 구조 등장
- 명령어 개수는 많아도 한 명령어의 실행 시간이 적기에 실행 시간 비슷할거라고 예상
- RISC
- 단순 명령어 형식, 명령어 종류 최소화, 고정 길이 명령어 사용
- 적재-저장 구조, 제한된 종류의 주소 지정 방식
- 하버드 아키텍처 (명령어 캐시, 데이터 캐시)(메모리는 하나인데 인터페이스를 따로 만듦)
- 장:
- 제어 장치가 간단해져 사이클 시간 ⬇️
- 명령어 집합의 단순화로 효율적인 최적화 컴파일러 개발 가능
- 현재는 RISC 구조와 CISC 구조의 장점을 통합하는 추세
picoMIPS 명령어 집합 구조
개요
- 스탠퍼드 대학에서 제안한 RISC 프로세서 모델
- 16bit 고정길이 명령어 형식
- 명령어 16bit, 데이터 16bit ⇒ 워드도 16bit
- 데이터: 2의 보수
- 기본적으로 3-주소 명령어 형식을 사용
- 적재-저장 명령어 구조
- 적재와 저장 메모리를 따로 두고 그 외 나머지 명령은 메모리 엑세스 x
- 연산은 레지스터만 이용해서 연산
- 8개의 레지스터(0 ~ 7) ⇒ 3bit
명령어 형식
- 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)
- 적재 명령 lw(load word):
- imm = immidiate 데이터 = 그냥 데이터 값이라는 것 = 0주소 데이터 같이 연산자 자체가 값인 경우
- J-형식 명령어:
PC ← PC + 2 + addr × 2
- 무조건 분기 명령(점프 명령)에 사용
- 피연산자 1개
- 12bit로 주소 표현
- 주소도 음수값을 가질 수 o, pc 상대주소로 값을 지정하기 때문
$rt ← M[$rs + immx2]
왜 곱2? 명령어도, 데이터도 2바이트 ⇒ 메모리를 읽을 때 짝수번지부터 읽음
imm의 데이터의 마지막은 항상 0이 될 수밖에 없음 ?
rt는 저장하려는 레지스터 주소
if ($rt == $rs) then PC ← PC + 2 + immx2
pc상대주소로 pc주소 지정
Uploaded by N2T
'이론 > 컴퓨터구조' 카테고리의 다른 글
실수, 비수치 데이터 (1) | 2023.12.24 |
---|---|
데이터 형식, 정수 (1) | 2023.12.06 |
주소 지정 방식 (1) | 2023.11.30 |
명령어와 메모리 (0) | 2023.11.27 |
피연산자의 수와 명령어 집합 (0) | 2023.11.24 |
댓글