목록전체 (37)
보근은 참고 있다
컴퓨터가 단순한 계산기와 다른 점은 판단 기능이 있다는 것이다. ----------------------------------------------------------------------------------------------------------------------------------- 판단을 위한 명령어에는 ① beq, ② bne, ③ slt, ④ slti, ⑤ sltu, ⑥ sltiu 들이 있다. ① beq (Branch if EQual), ② bne (Branch if Not Equal) 이 두 명령어들은 두 값이 같은지 다른지 결과에 따라 프로그램 내의 다른 주소로 제어를 넘길 수 있다. 이것을 조건부 분기라고 한다.(if-then-else) ① beq는 두 피연산자를 비교해 같으면 ..
초기의 컴퓨터는 워드 전체를 처리하는 데에만 관심을 가졌으나, 워드 내의 일부 비트들을 처리하는 것에 필요성을 느꼈다. 그로인해 비트들을 워드로 묶는 packing 작업과 워드를 비트 단위로 나누는 unpacking 작업을 하는 명령어들이 생겨났다. ----------------------------------------------------------------------------------------------------------------------------------- MIPS에는 이러한 논리연산 명령어가 7가지가 있는데, ① sll ② srl ③ and ④ or ⑤ not ⑥ nor ⑦ xor 들이다. ① sll (Shift Left Logical) 과 ② srl (Shift Right L..
사람이 컴퓨터에 명령을 내리는 방법과 컴퓨터가 명령어를 해석하는 방법의 차이를 알아보자. 명령어도 컴퓨터 내부에서는 높고 낮은 전기 신호의 연속으로 저장된다. 실제로 명령어의 각 부분을 숫자로 볼 수 있으며, 이 숫자들을 나란히 늘어놓으면 명령어가 된다. 레지스터 역시 명령어에 참조되기 때문에 레지스터 각각을 숫자로 매핑하는 규칙이 있다. $s0 ~ $s7은 16~23, $t0 ~ $t7은 8~15 등등. MIPS 명령어의 길이는 데이터 워드와 마찬가지로 32비트이다. "간단하게 하기 위해서는 규칙적인 것이 좋다"라는 설계 원칙을 따른 것이다. MIPS 어셈블리 언어를 기계어로 변환하면 다음과 같다. 위의 명령어 형식(instruction format)으로 나타낸 기계어는 "add $t0, $s1, $s..
컴퓨터가 수를 나타내는 법 컴퓨터는 일련의 높고 낮은 전기 신호의 형태로 숫자를 저장한다. 따라서 이진수를 사용한다고 볼 수 있다. 컴퓨터 내에서 모든 정보는 이진 자리 수(binary digit), 즉 비트(bit)로 구성되므로 비트가 계산의 기본 단위가 된다. 워드 내의 각 비트에 오른쪽에서 왼쪽으로 0, 1, 2, 3, ... 과 같이 번호를 붙인다. 워드는 위 그림처럼 수평뿐만 아니라 수직으로도 그릴 수 있기 때문에, 가장 오른쪽 혹은 가장 왼쪽 비트라고 말하면 표현이 애매할 수가 있다. 대신 LSB(Least Significant Bit)라는 용어로 가장 오른쪽 비트 0을 나타내고, MSB(Most Significant Bit)라는 용어로 가장 왼쪽 비트 31을 나타낸다. 2의 보수 MIPS 워..
상위 수준 언어 프로그램과는 달리 산술 명령어의 피연산자에는 제약이 있다. 레지스터(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)이라고 한다. 명령어는 사람이 프로그램을 작성할 때 사용하는 형태와 컴퓨터가 직접 읽을 수 있는 형태 두 가지로 표현된다. 명령어 집합은 여러 종류가 있지만 대부분이 유사하다. 이러한 유사성은 모든 컴퓨터가 같은 기본 원리 위에 구축된 하드웨어 기술로 만들어지며, 하드웨어가 제공하는 기본적인 연산은 몇 가지 안 된다는 사실에 기인한다. 더구나 대부분의 컴퓨터 설계자는 하드웨어와 컴파일러 제작이 쉬우면서도 최소 비용에 최대 성능을 구현할 수 있는 언어를 찾아내고자 하는 공통의 목표를 가지고 있다. 이 장에서는 ..