여섯 번째 글
The Case for the Reduced Instruction Set Computer
@David A. Patterson
컴퓨터 구조 수업에서 논문 비평 과제가 올라와서 읽게 되었다.
+a 점수 과제라 게으름이 앞선 나는 제출하지 않았지만, 한번 읽어보았다.
컴퓨터 아키텍처에 있어서 주된 목표는 전보다 비용에 있어서 효율적으로 설계하는 것이다.
여기서 효율적이라는 말은 여러 의미가 담겨 있는데, 실제 하드웨어 제작에 드는 비용, 프로그래밍 비용, 여러 디버깅에 소요되는 비용 등 모든 비용을 일컫는다.
그 전에 컴퓨터 아키텍처 정의에 대해서 조금 짚고 넘어가자.
컴퓨터 아키텍처는 적어도 아래 세 가지 메인 서브 카테고리를 포함한다.
자세한 것은 위키백과 Computer architecture 를 참고하길 바란다.
우리는 이 중 ISA에 대해서 살펴보는 것이다.
영어 약자를 생각하면 이해하기 쉽다. 출처
CISC는,
명령어의 길이가 가변적으로 구성된 것. 한 명령어의 길이를 줄여 디코딩 속도를 높이고 최소크기의 메모리 구조를 가진다. 대표적으로 x86. 하드웨어의 비중이 큼.
RISC는,
CPU에서 수행하는 동작 대부분이 몇개의 명령어 만으로 가능하다는 사실에 기반하여 구현함. 고정된 길이의 명령어를 사용한다. 적은수의 명령어로 명령어 집합을 구성하며 기존의 복잡한 명령은 보유한 명령어를 조합해서 사용한다. 보통 많은 수의 범용 레지스터를 가진다. 대표적으로 ARM. 소프트웨어의 비중이 큼.
즉, CISC 생태계에서 RISC가 등장하였는데, 왜 등장하게 되었고 그 배경은 무엇인지 대해서 이 논문에서 잘 설명하고 있다.
한번 자세히 알아보자.
논문에서 처음으로 설명하는 부분이다. RISC가 등장하기 전 CISC가 발전하는 단계 및 발전했던 배경을 보여주는 부분이다.
Speed of Memory vs. Speed of CPU
701 CPU는 메모리보다 10배 이상 빨랐다. 그래서 instruction 요소에 비해 subroutine으로 실행되는 요소가 훨씬 느리게 되었다. 그래서 709 CPU에서는 부동 소수점 subroutine이 아키텍처에 포함되었다. 그래서 복잡해졌지만 스피드는 훨씬 빠르게 되었다.
Microcode and LSI Technology
마이크로프로그램화 제어는 hardwired control보다 복잡한 아키텍처 실행에 있어서 효율화를 가져다주었다.
Code Density
초기 컴퓨터 속 메모리는 매우 비쌌다. 양날의 검처럼 컴팩트하게 코드를 짧게 짜는 대신 아키텍처의 복잡도는 커진다.
Marketing Strategy
원래 컴퓨터 회사의 주 목표는 컴퓨터를 많이 팔아 돈을 버는 것이었다. 하지만, 경쟁사와의 우위를 차지하기 위해서 성능이라는 더 나은 지표를 만들어야 했다.
Upward Compatibility
Support for High Level Languages
Multiprogramming
즉, CPU와 메모리 속도 차이가 감소하고, 점점 아키텍처가 복잡해지면서 비논리적인 구현, 설계하는데 시간 소요 너무나 큰 점, 설계에 있어서 에러 발생율 증가와 같은 단점이 생기게 된다.
특정 유니크한 명령들은 프로그램 속도를 크게 향상시킬 수 있다는 의심할 여지 없는 많은 예가 있습니다. 하지만, 그럼에도 명령어가 복잡해지는 것을 생각하면서, 계속적으로 그 사용에 대해 의구심을 가지고 검증을 해야할 것이다.
우리는 "복잡성"(아마 설계 및 단계 간 걸리는 시간)을 최소화하고 "성능"(아마도 기술 독립적 시간 단위로 게이트 지연으로 표현 된 평균 실행 시간을 사용)을 최대화하는 것이 가치 있다고 가정한다.