티스토리 뷰

[전광성의 어셈블리어 이해하기:2회] IA-32 프로세서 아키텍쳐란? (3)
저자: 전광성 |  날짜: 2004년 12월 15일  

/
1 .0 IA-32 프로세서 아키텍쳐란? (1)
2 .0 IA-32 프로세서 아키텍쳐란? (2)
0 IA-32 프로세서 아키텍쳐란? (3)
/
  • 시스크(CISC)와 리스크(RISC)

    명령어는 크게 CISC(Complex Instruction Set Computer) 방식과 RISC(Reduced Instruction Set Computer)방식으로 구분할 수 있다. 인텔의 초기 프로세서들은 시스크(CISC : Complex Instruction Set)접근 방식으로 성능 향상시키려고 시도 하였다.

    CISC 방식은 기본 명령어가 있고 필요에 따라서 뒤에 명령어의 길이를 늘리는 방식으로 명령어를 확장한다. 따라서 하위 호환성을 갖게 된다.

    예를 들어 펜티엄용 프로그램은 펜티엄 이상의 프로세서에서는 모두 사용이 가능하다. 하지만, 명령어의 개수가 많고 명령어와 데이터의 길이가 일정하지 않고 가변적으로 구성된다는 문제점이 있다. 따라서 프로그램의 실행 위치는 실제 프로그램이 순차적으로 실행되기 전에는 알 수 없게 된다. 또한, CISC 방식은 명령어의 수준과 길이에 따라서 명령어 변환 과정에 소요되는 클럭 수가 달라지게 되어 프로그램의 실행 타이밍을 정확히 추적하는 것도 어렵게 되며, 실행 타이밍을 정하기도 어렵다.

    반면 RISC 방식은 프로세서에 따라서 필요한 명령어 세트만을 제한적으로 지원하고 명령어의 길이가 일정하게 구성이 된다. 따라서 하위 프로세서와 호환이 되지 않으며 전용 운용 시스템에 전용 소프트웨어를 필요로 한다. 이 경우에 명령어의 길이가 일정하고 명령어의 실행 위치가 미리 확연하게 정해져 있기 때문에 프로그램을 기계어로 변환하는 과정에서 프로그램이 최적화되게 된다.

    또한 명령어의 개수가 제한적이고 적기 때문에 프로그램의 최적의 실행을 위한 재배열도 손쉽게 이루어진다. 또한, 기계어를 다른 코드로 변환하지 않고 직접 실행 유니트에서 실행되기 때문에 대부분의 명령어를 1클럭으로 실행하게 된다. 따라서 실행 타이밍은 명령어의 개수를 통해서 쉽게 알 수 있기 때문에 여러 개의 명령어를 동시에 실행할 때 순서를 정하는 스케쥴링이 쉽다.

    하지만 왜 일반적으로 CISC를 사용하고 있을까? 그것은 CISC 명령어는 호환성이 뛰어나기 때문이라고 한다. 즉, 상위 프로세서는 하위 프로세서용으로 제작된 프로그램도 모두 사용이 가능하다. 실제로 RISC 계열의 컴퓨터에 비하여 CISC 계열의 컴퓨터용 소프트웨어가 엄청나게 많은 주된 이유가 바로 이것 때문이다. 궁극적으로 사용자는 소프트웨어를 운용하게 되며 많은 소프트웨어가 있을 수록 컴퓨터의 사용 환경은 당연히 더욱 유리해진다. 따라서 인텔 계열에서는 CISC를 포기하지 못하고 있는 것이다.

    CISC와 RISC 참고자료 :
    http://www.technoa.co.kr/content/View.asp?pPageID=50668

  • 마치는 글

    이번회에서 배운 내용 중 핵심은 레지스터 메모리이다. 다른 내용은 대충 이런가보다 하면 대 만족이다. 레지스터 메모리의 역할을 좁게 보았을 때 당장 필요한 어떤 연산에 대한 피연산자를 올려놓을 고속의 임시공간이며, 결과가 들어갈 수도 있는 공간이라는 것만 알아둔다면 크게 문제될 것 없다.

    다음 회에서는 본격적으로 어셈블리어를 코딩해 볼 것이며, 지금까지 이론적으로 설명했던 것들이 서서히 구현되어 갈 것이다. 다음 장부터 배우는 어셈의 부분적인 것들은 스스로 고급언어에 어떻게 적용될 수 있는 것인지 생각해 볼 수 있길 바라며 이번 강좌를 마치겠다.


  • 댓글
    안내
    궁금한 점을 댓글로 남겨주시면 답변해 드립니다.