MIPS

CS/컴퓨터 구조

[컴퓨터 구조] 13. Single Cycle MIPS - Execute

MIPS CPU의 Execute 단계가 어떻게 실행되는지 명령어의 기능에 따라 구분하여 정리하였다. 산술/논리 연산자 실행 add, sub, addi, or, and 와 같은 명령어를 실행하는 과정을 먼저 생각해보자. 우선 위 연산을 실질적으로 실행하는 유닛은 ALU 라는 유닛이 수행한다. 산술 연산과 직접적으로 관련된 명령어 포맷은 R 포맷과 I 포맷 밖에 없다. R 포맷은 모든 피연산자가 레지스터고, 연산 결과가 레지스터로 들어간다. I 포맷은 피연산자가 하나는 레지스터, 하나는 상수고, 연산 결과가 레지스터로 들어간다. 우선 피연산자 하나는 반드시 레지스터에서 오고, 연산 결과는 레지스터로 들어가는 것이 동일하므로 아래와 같이 그릴 수 있다. 이제 결정해야 하는 것은 R 포맷이면 레지스터로부터 AL..

CS/컴퓨터 구조

[컴퓨터 구조] 12. Single Cycle MIPS - Decode

MIPS Decode 회로 지난 글에 이어 MIPS의 Decode 회로를 설계해보자. Decode 과정은 명령어를 해석하는 과정이다. 명령어를 실행하려면 크게 2가지 정보를 알아야 한다. 1. 무슨 명령어인가? ( = 연산자 정보) 2. 무엇을 가지고 실행하는가? ( = 피연산자 정보) MIPS 명령어는 포맷별로 아래와 같은 형태를 갖추고 있다. 3가지 포맷은 모두 공통적으로 6bit 크기의 opcode 필드를 갖고 있다. 이 opcode를 통해서 지금 주어진 명령어가 어떤 명령어인지 식별한다. R 포맷은 opcode 에 더해 function 필드 정보를 조합하여 실행할 명령어를 식별한다. 그리고 opcode 와 funct 를 제외한 나머지 필드가 모두 피연산자로서 활용하는 필드가 된다. 우선 J 포맷은..

CS/컴퓨터 구조

[컴퓨터 구조] 11. Single Cycle MIPS - Fetch

Fetch 회로도fetch는 명령어를 가져오는 과정이다.명령어를 가져올 때, 컴퓨터는 PC (Program Counter) 라는 특별한 레지스터를 이용한다.이 레지스터에는 현재 실행할 명령어가 메모리 어디에 담겨있는지, 그 주소값이 담겨있다.컴퓨터가 처음 실행되면, PC는 0으로 초기화되고, 메모리 0번지에 있는 명령어를 가져와 실행할 것이다.하나의 명령어를 실행한 이후에는, 다음 명령어를 실행하기 위해 PC 값을 4 증가시킨다. (32bit 시스템 기준) 이 과정이 점프나 분기가 없는, 순차적으로 실행되는 프로그램 기준 Fetch 의 과정이다.이를 회로도로 그려보자.  먼저 CPU 공간과 명령어를 가져오는 메모리 공간을 따로 그려보자.  CPU 안에는 PC 라는 특별한 레지스터가 있다. 32bit-re..

CS/컴퓨터 구조

[컴퓨터 구조] 5. MIPS Data Transfer Instructions (2)

Zero Register0번 레지스터는 항상 값을 0으로 유지하는 레지스터이다.이 레지스터에 값을 쓰려고 할 수 있지만, 그 결과는 언제나 0이다. 이 레지스터는 다른 레지스터에 값을 옮기는 move 명령어를 구현할 때 0과 or 연산을 취해서 다른 레지스터에 값을 쓰는 식으로 move 명령어를 구현하는 용도로 사용된다. 또는 상수값을 레지스터에 쓰고자 할 때, 0과 더하기를 해서 원하는 상수값을 레지스터에 쓰는 용도로 쓸 수도 있다.  메모리에 접근하는 상황우리의 컴퓨터는 stored program 방식을 사용하고 있다.즉, 프로그램의 명령어와 데이터가 오프칩 메모리에 저장되어 있고, CPU는 명령어와 데이터를 메모리로부터 읽어와 연산하는 방식이다. CPU가 메모리에 접근하는 상황은 크게 2가지이다.첫..

에버듀
'MIPS' 태그의 글 목록 (2 Page)