책너두 (컴퓨터 밑바닥의 비밀) 27일차 CPU 진화론(중): 축소 명령어 집합의 탄생

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

댓글

Designed by JB FACTORY