본문 바로가기
IT

컴퓨터구조 RISC와 CISC

by 미니송 2017. 8. 4.



컴퓨터 구조


이번 포스팅은 컴퓨터 구조에 대해 하겠습니다. 컴퓨터에는 많은 부품들이 들어가는데 CPU, RAM, 저장공간, 파워 등이 들어갑니다. 이 중 컴퓨터 구조는 CPU의 구조에 대해 설명하는 것입니다. 컴퓨터 구조에는 인텔의 x86 arm CPU가 대표적으로 있습니다.



컴퓨터 구조

컴퓨터 시스템을 설명하는데 있어서 컴퓨터구조와 컴퓨터 조직을 구분해야 할 때가 있습니다. 비록 이 용어들을 정확히 구분하여 정의하기는 어렵지만, 각각에 대하여 통용되고 잇는 정의는 다음과 같습니다.


컴퓨터 구조란 시스템의 기본적 특성들 중에서 프로그래머에게 보이는 부분들, 즉 프로그램의 논리적 수행에 직접적인 영향을 주는 시스템 특성들을 말합니다. 컴퓨터 조직이란 구조에서 정의한 사항들을 구현하기 위한 연산 유닛(operational units)들과 상호연결 방식을 말합니다.


구조의 예로는 명령어 세트, 여러가지 데이터들의 표현에 사용되는 비트들의 수, I/O 방식 및 기억장치 주소지정방식 (memory addressing mode) 등을 들 수 있습니다.


조직에는 프로그래머에게는 보이지 않는 하드웨어 세부사항들인 제어 신호(control signal), 컴퓨터와 주변기기들 사이의 인터페이스 및 기억 장치 기술 등이 포합됩니다.


컴퓨터의 조직과 기능은 본질적으로 단순합니다. 컴퓨터가 수행할 수 있는 기본적인 기능들을 보여주고 있는데, 이들은 다음과 같이 네 가지로 분류합니다. 데이터 처리, 데이터 저장, 데이터 이동, 데이터 제어입니다.


컴퓨터는 물론 데이터 처리를 할 수 있어야 합니다. 데이터는 여러 가지 방식들에 의해 표현되고 처리됩니다.


인텔 x86

x86 구조는 임베디드가 아닌 컴퓨터 시스템들을 위해 가장 널리 사용되고 있습니다. x86은 근본적으로 몇 가지 RISC 특징을 가진 복합 명령어 세트 컴퓨터(CISC) 입니다. 저희가 사용하는 흔한 데스크탑이라고 생각하시면 될 것 같습니다.



ARM

ARM 임베디드 구조는 가장 널리 사용되는 임베디드 프로세서로, 셀전화, 원격센서장치 및 많은 다른 장치들에 사용되고 있습니다. ARM은 근본적으로 축소 명령어 세트 컴퓨터(RISC) 입니다. ARM 계열의 최근 멤버들은 슈퍼스칼라와 멀티코어 설계 원리를 사용하고 있습니다.



RISC

축소 명령어 집합 컴퓨터(Reduced Instruction Set Computer, RISC) CPU 명령어의 개수를 줄여 하드웨어 구조를 좀 더 간단하게 만드는 방식으로, 마이크로프로세서를 설계하는 방법 가운데 하나이며, SPARC, MIPS 등의 아키텍처에서 사용됩니다.


전통적인 CISC CPU에는 프로그래밍을 돕기 위한 많은 수의 명령어와 주소 모드가 존재했습니다. 그러나 그 중에서 실제로 쓰이는 명령어는 몇 개 되지 않는다는 사실을 바탕으로, 적은 수의 명령어만으로 명령어 집합을 구성한 것이 RISC입니다. 그래서, RISC CISC보다 구조가 더 단순하며 복잡한 연산도 적은 수의 명령어들을 조합하는 방식으로 수행이 가능합니다.


그리고 CISC 형식의 CPU ROM에 소프트웨어적으로 적재된 내부 명령어들을 하드웨어적으로 구성하여 제어기가 제거된 부분에 프로세서 레지스터 뱅크와 캐시를 둡니다. 이렇게 함으로써 CPU, 상대적으로 느린 메인 메모리에 접근하는 횟수를 줄여주어 파이프라이닝 등 시스템 수행속도가 전체적으로 향상됩니다.



CISC

복잡 명령어 집합 컴퓨터(Complex Instruction Set Computer, CISC)는 복잡한 명령어 집합을 갖는 CPU 아키텍처입니다.


명령어가 복잡하기 때문에 명령어를 해석하는 데 시간이 오래 걸리며, 명령어 해석에 필요한 회로도 복잡합니다. 보통 풍부한 어드레싱 기능을 갖추고 있어 명령의 직교성이 좋으며, 어느 어드레싱 모드에서도 임의의 연산을 수행할 수 있습니다.


연산에 대해서는 레지스터와 레지스터 연산, 레지스터와 메모리 연산, 메모리와 메모리 연산을 모두 갖추고 있는 것이 보통입니다. 피연산자(operand) 2개에서 3개까지 지정할 수 있는 경우가 많습니다. , 메모리 1의 내용과 메모리 2의 내용의 논리곱을 취해 메모리 3에 넣는 일을 하나의 명령어로 수행할 수 있습니다.


C 언어의 연산자는 CISC PDP-11이 갖추고 있던 명령에서 나온 것입니다. 인덱스 어드레싱시의 오프셋도 명령의 데이터의 길이에 맞추어 바뀌는 것이 많습니다. , 길이가 다른 데이터 사이의 연산에서도 연산 전에 자동적으로 부호 확장 등이 수행되기 때문에, 데이터 길이를 가지런히 하는 명령어가 필요 없는 경우가 많습니다. 하나의 명령어를 수행하는 처리가 복잡하기 때문에, 마이크로 프로그램 방식을 채택하는 경우가 많습니다.


주로 메인프레임이나 X86 호환 프로세서 계열 프로세서에서 이 방식을 사용하고 있습니다. 펜티엄 시리즈와 같은 CISC CPU도 내부적으로는 복잡한 명령들을 다시 단순한 명령들로 나누어 명령어 파이프라인에서 처리하기 때문에, 실제 내부 작동원리는 RISC와 같다고 할 수 있습니다.

 

댓글