컴퓨터 구조

    6. MIPS-6

    무조건적인 분기 명령어 J(jump) J명령어는 J format 형식의 명령어이다. opcode / jump target 이렇게 두 개의 field로만 구성된다. 명령어는 32bit이고 opcode는 6비트이기 때문에 jump target은 26bit이다. 앞서 살펴본 조건 분기 명령어인 beq와 bnq는 offset이 들어가는 자리가 16bit밖에 되지 않기 때문에 분기할 수 있는 범위가 (-2^15 ~ 2^15-1)밖에 되지 않았다. 하지만 J format 명령어의 경우 분기할 수 있는 범위는 (-2^25 ~ 2^25-1)로 많은 영역을 커버할 수 있다. 따라서 J 명령어와 beq / bnq 명령어를 잘 조합하여 사용한다면 보다 넓은 영역에 조건에 따른 분기를 수행할 수 있다. 함수를 호출할 때 함수..

    5. MIPS-5

    분기 명령어 MIPS에는 두 가지 형태의 분기 명령어가 존재한다. 조건에 따른 분기 명령어 : bne(branch if not equal), beq(branch if equal) 조건 없는 분기 명령어 : j(jump), jal(jump and link), jr(jump register) 전자는 해당 조건을 만족하면 분기를 수행하며, 후자는 조건없이 무조건 분기를 수행한다. bne, beq 명령어는 I format 명령어이다. 이때 immediate field에는 넘어갈 곳의 offset 값이 들어간다. PC+4의 값을 base로 삼고 거기에 immediate field가 표현하고 있는 offset을 더하는 것으로 생각하면 된다. bne $s0, $s1, SKIP#if $s0 != $s1 then go ..

    4. MIPS-4

    논리 연산 논리 연산의 특징은 bit by bit 연산을 취한다는 점에 있다. AND, ANDI AND 연산은 마스킹 연산을 취할 때 주로 사용한다. 관심 없는 부분은 0으로 세팅하고 관심 있는 부분은 1로 세팅한다. (16진수이므로 1은 F이다) 0xF234012F AND 0x000000FF = 0x0000002F and $t0, $t1, $t2 #$t0 = $t1 & $t2 andi $t0, $t1, 0xFF00 #$t0 = $t1 & ff00 OR, ORI OR 연산은 서로 다른 non Zero값을 결합할 때 사용한다. 0xF1230000 OR 0x00004567 = 0xF1234567 or $t0, $t1, $t2 #$t0 = $t1 | $t2 ori $t0, $t1, 0xFF00 #$t0 = $..

    3. MIPS-3

    Data transfer instruction 레지스터의 용량은 한정적이다. (32비트 = 4바이트) 작은 사이즈의 변수는 레지스터에 저장할 수 있겠으나, 배열과 같이 큰 사이즈의 변수는 그 값들을 레지스터에 저장할 수 없다. 따라서 큰 사이즈의 변수는 메모리에 저장한 뒤 필요할 때마다 레지스터에 저장한다. 메모리는 1바이트 단위로 주소가 배정되어있고, 배열은 메모리에 연속적으로 저장된다. 한편 레지스터는 기본적으로 word 단위(4바이트)로 처리하고 싶어하기 때문에 메모리로부터 4바이트씩을 불러온다. 결과적으로 메모리 읽기 / 쓰기 작업을 할 때 4바이트 단위로 이루어지는 것이 보편적이다. 이에 따라 읽기 / 쓰기 작업을 위한 메모리의 접근 주소는 4의 배수 꼴로 나타난다. (16진수 기준으로 끝의 숫..

    2. MIPS-2

    프로그래밍 언어는 고급 언어와 저급 언어로 나눌 수 있다. 이미 알고 있겠지만, 이 둘은 인간이 이해하기 쉬운 언어인지, 기계가 이해하기 쉬운 언어인지로 분류한 것이다. C는 당연히 고급 언어에 속하며, 어셈블리어 및 기계어는 저급 언어에 속한다. 또한 고급언어인 C는 현재 실행하고 있는 환경에 관계없이 돌아갈 수 있지만, 어셈블리어는 각 CPU마다 문법이 다르다. 결과적으로 C는 x86환경에서도 돌아가고 power pc환경에서도 돌아갈 수 있다. (이를 portability가 있다고 표현한다) 하지만 어셈블리어는 x86의 것 따로, power pc의 것 따로 존재한다. (즉 어셈블리어는 portability가 없다) MIPS Instruction Field 32bit의 명령어는 여러 개 bit들의 부분..

    1. MIPS-1

    컴퓨터 구조를 이해하기 위해 32bit MIPS CPU를 공부한다. MIPS는 RISC(Reduced Instruction Set Computer)에 해당한다. 각각의 명령어는 고정된 길이의 형태로 구성되어 있음. (32bit, 3개의 Operand를 가짐) 최대한 작게 만들자는 철학을 가지고 있다.(그래야 빠르기 때문임) 따라서 Instruction Set도 단순하다. Register의 개수도 적다. (MIPS는 32개의 Register를 가지고 있다) Register CPU가 연산을 빠르게 하기 위해서는 빠른 저장 공간에 값을 가져와야 한다. 이때 가장 빠른 저장공간은 CPU 내부에 위치한 Register이다. 한편 Register가 여러 개 모여있는 형태를 Register file이라 부른다. (관..