- 시간이 흐르고 기술이 발전하면서 더이상 컴파일러와 저장 장치의 용량 제한 같은 객관적 조건의 제한을 받지 않음.
- 메모리 용량 대비 가격이 급격히 떨어지기 시작함.
- 컴파일러 기술이 발전해 프로그래머도 점점 고급 언어로 프로그램을 작성하기 시작함.
- 복잡함을 단순함으로
- 컴퓨터 과학자 데이비드 패터슨은 다음과 같이 말함.
- 복잡 명령어 집합에서 성능을 향상 시키는 것으로 여겨지는 명령어는 실제로 CPU 내부 마이크로코드에 의해 가로막힘.
- 오히려 마이크로코드를 제거하면 프로그램이 더 빠르게 실행되며, CPU를 구성하는 트랜지스터를 절약할 수 있음.
- 마이크로코드 설계 아이디어는 복잡한 기계 명령어를 CPU 내부에서 비교적 간단한 기계 명령어로 변환하는 것임.
- 컴파일러는 이 프로세스를 알지 못함.
- 마이크로코드에 버그가 있으면 컴파일러는 이를 피하기 위해 할 수 있는 일이 아무것도 없음.
- 이 외에도, 일부 복잡한 기계 명령어가 같은 일을 하는 간단한 명령어 여러 개보다 느리게 실행된다는 사실도 발견됨.
- 축소 명령어 집합의 철학
- 복잡 명령어 집합에 대한 반성을 바탕으로 축소 명령어 집합(reduced instruction set) 이 탄생함.
- 명령어 자체의 복잡성
- 하나의 복잡 명령어를 제거하고 간단한 명령어 여러 개로 대체함
- 이 사상은 CPU 내부 마이크로코드 설계를 제거함
- 마이크로코드가 없으면 컴파일러에서 생성된 기계 명령어의 CPU 제어 능력이 크게 향상됨.
- 컴파일러
- 축소 명령어 집합은 컴파일러가 CPU에 대해 더 강력한 제어권을 가짐.
- 축소 명령어 집합을 사용하는 CPU는 더 많은 세부 사항을 컴파일러에 제공함.
- LOAD/STORE 구조
- 복잡 명령어 집합은 기계 명령어 하나만으로 데이터 가져오기(IF), 작업 수행하기(EX), 해당 데이터 메모리에 다시 쓰기(WB) 작업을 모두 할 수 있음.
- 축소 명령어 집합은 절대로 불가능한 금기 사항임.
- 축소 명령어 집합의 명령어는 레지스터 내 데이터만 처리할 수 있음.
- 메모리 내 데이터는 직접 처리할 수 없음.
- 축소 명령어 집합은 LOAD, STORE 라는 전용 기계 명령어가 메모리의 읽고 쓰기를 책임짐.
- 다른 명령어 들은 CPU 내부 레지스터만 처리할 수 있음. 그러나 메모리를 읽고 쓸 순 없음.
댓글