목록CS/컴퓨터 구조 (13)
보근은 참고 있다
상위 수준 언어 프로그램과는 달리 산술 명령어의 피연산자에는 제약이 있다. 레지스터(register)라고 하는 하드웨어로 직접 구현된 특수 위치 몇 곳에 있는 것만을 사용할 수 있다. MIPS 구조에서 레지스터의 크기는 32비트이다. MIPS에서는 32비트가 한 덩어리로 처리되는 일이 매우 빈번하므로 이것을 워드(word)라고 부른다. 프로그래밍 언어에서 사용하는 변수와 레지스터의 큰 차이점 하나는 레지스터는 개수가 한정되어 있다는 점이다. 현대 컴퓨터에는 MIPS에서처럼 보통 32개의 레지스터가 있다. 산술 명령어의 각 피연산자는 32개의 32비트 레지스터 중 하나이어야 한다는 제약이 추가된다. 설계 원칙 2 : 작은 것이 더 빠르다. 레지스터 개수가 많아지면 전기 신호가 더 멀리까지 전달되어야 하므로..
기본적으로 모든 컴퓨터는 산술연산을 할 수 있어야 한다. MIPS 산술 명령어는 반드시 한 종류의 연산만 지시하며 항상 변수 세 개를 갖는 형식을 지킨다. ex) add $t0, $t1, $t2 // $t0에 $t1 + $t2의 값을 넣는다. 기억할 장소 하나와 더해질 값의 장소 두 개, 모두 세 개인 것이 자연스럽다. 이렇게 모든 명령어가 피연산자를 반드시 세 개씩 가지도록 제한하는 것은 하드웨어를 단순하게 하자는 원칙과 부합한다. 설계 원칙 1 : 간단하게 하기 위해서는 규칙적인 것이 좋다. ex) 상위 프로그램의 연산을 하드웨어에서의 연산으로 치환. a = b + c; d = a - e; => add a, b, c sub d, a, e
컴퓨터 하드웨어에게 일을 시키려면 하드웨어가 알아들을 수 있는 언어로 말을 해야한다. 컴퓨터 언어에서 단어를 명령어(instruction)라 하고 그 어휘를 명령어 집합(instruction set)이라고 한다. 명령어는 사람이 프로그램을 작성할 때 사용하는 형태와 컴퓨터가 직접 읽을 수 있는 형태 두 가지로 표현된다. 명령어 집합은 여러 종류가 있지만 대부분이 유사하다. 이러한 유사성은 모든 컴퓨터가 같은 기본 원리 위에 구축된 하드웨어 기술로 만들어지며, 하드웨어가 제공하는 기본적인 연산은 몇 가지 안 된다는 사실에 기인한다. 더구나 대부분의 컴퓨터 설계자는 하드웨어와 컴파일러 제작이 쉬우면서도 최소 비용에 최대 성능을 구현할 수 있는 언어를 찾아내고자 하는 공통의 목표를 가지고 있다. 이 장에서는 ..