티스토리 뷰
목차
RISC 명령어 집합, 코드 크기, 병목 현상에 대해서 [컴퓨터구조]
RISC 명령어 집합과 인코딩
압축 코드의 두 가지 기능 수행을 도움
첫 번째,
- 같은 양의 컴파일 된 프로그램의 유지를 위해 작은 메모리 장치를 갖는 컴퓨터 시스템을 허용
- 여기서, 메모리 장치란, 디스크, 메인 메모리, (명령어) 캐시를 의미
- RISC 메모리 장치는 작고, 빠르며 저렴하게 사용할 수 있음
- 같은 크기의 메모리 장치는 컴파일된 코드를 더 많이 저장할 수 있음
두 번째,
- 기계 코드를 압축할 때, CPU가 원하는 속도(비용)로 명령어 fetch를 하기 위해 적당한 대역폭이 필요함
- 이때 RISC에서 사용하는 버스들은 저렴
- 같은 대역폭(Bandwidth)은 컴파일된 프로그램의 명령어 사이클(instruction cycle)을 더 빠르게 수행. (완료되는 시간을 줄임)
버스의 크기 = 대역폭(Bandwidth)
명령어 사이클 = Fetch Cycle + Execution Cycle
세 번째
- 코드를 압축하는 기존의 다른 방법보다 더 큰 비용이 필요할 가능성도 있음
RISC 평균 코드 크기 감소
Fetch가 필요한 명령어의 수를 줄임
첫 번째
- Huffman 인코딩 방식과 비슷한 명령어 형식을 이용
- 변수가 명령어 안의 필드 수를 보유
- 명령어 사용량의 상대 빈도와 필드 타입에 따라 선택
두 번째
- 자주 사용되는 기본 연산과 관련된 과정은 하나의 명령어로 만들 수 있음
- 그 명령어에 중간 결과를 명시하는 필드를 배제하고, 복합 필드에 공통적인 연산 대상을 명시하는 것이 가능
회로 (circuitry)
RISC, 피해야 할 부정적 영향
- CPU의 성능과 비용에 대한 명령어 압축, 결합을 신중하게 결정
- 명령어 해독(decode), 실행 제어(control) 때문에 크기가 커질 수 있음
- 명령어 encoding 과정이 복잡해 큰 비용이 필요함
- 명령어를 병렬이 아닌 직렬로 디코딩할 때 성능이 심각하게 저하
명령어 순서가 변할 때 제어(Control)가 필요(동작)
병렬 프로세서 : 프로세서들이 하나의 큰 작업을 나누어 병렬로 처리하는 것
- 중요한 명령어의 필드를 추출해 해석할 때, 다른 필드의 decode에 의지하면 안 됨
- 명령어는 데이터 경로 안에 많은 중간 결과를 요구할지도 모름
- 이럴 경우, 전류의 양이 증가해 실행 속도가 느려지고, 인터럽트 핸들링이 힘들어짐
기계 코드 압축으로 성능 개선 (improve performance by compacting the machine code)
RISC 명령어 fetch 시 병목 현상 완화
- 기계 코드 압축으로 인한 성능 개선엔 한계점이 있음
Fetch는 execution과 일부 중첩되어 fetch 시간을 감소해도 성과는 없음
- 정교하지 않은 기계에선 fetch 사이클의 전체 버스가 계속 필요한 제한점
: 명령어는 줄지만, 버스는 유지되어 그만큼의 공간이 낭비
: 버스 사용이 늘면 버스 병목현상 발생
- Integer 명령어는 fetch 사이클의 추가를 요구해 명령어들은 워드의 경계(word boundary)에 정렬되지 않음
- 버스와 메모리 장치를 늘리는 데 비해 버퍼링 된 명령어를 편리하게 사용하면 기계 장치에 대한 비용을 낮출 수 있음
RISC 명령어들
간단한 명령어들이지만 코드 사이즈를 낭비하는 점에 대한 해결책
- 명령어들은 항상 1 word로 구성
- 하나의 사이클은 하나의 명령어를 fetch 하는 데 필요
- Execute 사이클은 가능한 많은 작업을 수행하도록 정의
- 디코딩과 필드 추출을 담당하는 칩의 면적은 1~2%에 불과
- 또 다른, 간단한 해결책
메모리 가격은 하락함
메모리 낭비는 흔히 있는 일 (심각한 수준의 낭비가 아니면….)
RISC 코드 크기
- RISC도 명령어 집합(set)과 형식(format)이 있음
- 다른 프로세서들에 비해 조금 크다
- 압축된 VAX-11 코드 크기의 150%를 넘진 않음
- 당시에 초당 백만 개의 명령을 수행
Garrison과 VanDyke
- Instruction set, variable-length field, instruction들을 인코딩하여 크기를 얼마나 줄일 수 있는지 연구
- 나중에 저장될 명령어를 가리키는(지시하는) 것이 가능
- 다른 프로세서 코드와 같은 범위에서의 RISC 코드 크기를 의미
RISC 명령어 집합, 코드 크기, 병목 현상에 대해서 [컴퓨터구조]