ݺߣ

ݺߣShare a Scribd company logo
The Hardware/Software Interface
MIPS CPU의 이해 (입문)
Instruction & Overview
JEONG JIN WOOK
2015. 10. 22
Index
n MIPS 명령어
n beq, bne
n 순환문
n 대소비교..
n MIPS 관련용어
n Register, ALU
n Word, ALU
n Control Unit, Register Set
n PC, Mux ..
n MIPS 개괄적 이해
n 핵심명령어
n CPU Overview, 피연산자, 레지스터 사용관례
n MIPS 구현, R형식, I형식
n MIPS의 데이터패스 예
MIPS 명령어 – beq, bne
n Conditional Branch
n beq register, register2, L1
n register, register2가 같으면 L1로 이동
n beq = branch if equal
n bne register, register2, L1
n register, register2가 다르면 L1로 이동
n bne = branch not equal
MIPS 명령어 - 순환문
n while(save[i]==k) i+=1;의 MIPS 어셈블리 코드 작성
n 주소계산후, 임시 레지스터에 t1의 값을 넣은후, 조건검사후, != 으면 1을 더한후,
처음으로 다시 돌아간다.
Loop : sll $t1, $t3, 2
# sll은 shift left logical의 약자로, 왼쪽자리이동을 말함
# $t3를 좌측으로 2비트 이동하면 4를 곱한것과 같음 이를 직관적으로
표현하면, $t1 = i * 4 와 같음
add $t1, $t1, $s6
# $s6의 베이스 주소값을 더함.
lw $t0, 0($t1)
# 임시 레지스터에 저장
bne $t0, $s5, Exit
# save[i]!=k이면 순환문을 빠져 나감
ADDI $S3, 3, 1
# I에 1을 더함 I=I+1
J Loop
Exit:
# 순환문의 끝에서 맨 앞의 Loop로 되돌아감.
MIPS 명령어 – 두 변수간 대소비교
n slt (set on less than)
n slt $t0, $s3, $s4
n $t0=1 if $s3 < $s4
MIPS 명령어 – 프로시저 지원
n 프로시저
n procedure에 제공되는 인수에 따라 특정 작업을 수행하는
서브루틴
n jar (jump and link instruction)
n jal ProcerdureAddress
n 지정된 주소로 점프후 다음 명렁어의 주소를 ra register에
저장
n jr (jump register)
n jr $ra
n 저장된 주소로 무조건 점프
n $a0-$a3 인수레지스터에 전달할 인수값을 저장후, jal X
명령어를 이용해, 프로시저 X로 점프후, 계산결과를 $V0-
$V1(반환되는 값을 가지는 레지스터2개)에 저장후 jr
$ra(호출한곳의 복귀주소)명령으로 복귀
MIPS 명령어 - 산술명령어
n MIPS의 산술명령어는 add 연산을 말하며 다음 형식을 가짐
n add a, b, c #주석
n b + c를 a에 저장하는 명령어
n 피연산자를 3개로 제안함으로서 간단한 설계를 유지함
n 여기서, instruction(연산자)는 add이며, operand(피연산자)는 a,b,c를 말함
MIPS 관련용어
n 레지스터
n 레지스터는 순차회로이다. CPU 명령어는 레지스터 기반으로 동작.
n 32Bit로 이루어짐
n $0, $1 .. $31 으로 이름지어 있음
n 순차회로는, 플립플롭이라는 메모리 소자가 있으며, 클럭 펄스가
들어오기 전에는 출력단에 변화가 없다. (이런 이유로, 메모리소자라함)
n 레지스터(클럭필요)는 입력값 3이 바뀌더라도, 출력값 1이 변하지 않음
MIPS 관련용어
n Word
n 각 기억 장소에 저장되는 데이터 단위로서, CPU에 의해 한 번에
처리될 수 있는 비트들의 그룹
n ALU
n 조합회로이다. 클럭이 필요없으며, 입력값이 바뀌면, 그 값이 바로
반영됨. 다음 클럭이 인가되어야만, 1의 값이 변하게됨.
n 각종 산술 연산들과 논리 연산들을 수행하는 회로들로 이루어진
하드웨어 모듈로, 산술연산(+, -, ×, ÷)과 논리연산(AND, OR,
NOT, XOR 등) 수행
n Control Unit
n ALU에서 수행할 동작지시
n 레지스터간의 데이터 전송 감시
n 명령어를 해석하고 실행하기 위한 제어 신호들(control
signals)를 순차적으로 발생하는 H/W 모듈
MIPS 관련용어
n Register Set
n 명령어 수행 동안 발생하는 임시 데이터 저장
n PC (Program Counter)
n 현재 명령어의 주소나 다음에 인출할 명령어를 가짐
n 명령어를 저장하고 주소가 주어지면 해당 명령어를 목적지 주소로 갱신
n PC를 다음 명령어 주소로 증가
n ALU를 통해 다음 명령어 주소로 증가하는 덧셈기 구현가능
MIPS 관련용어
n MUX
n 레지스터 선택 및 선택된 레지스터 정보를 ALU로 출력하는 선택
논리회로
MIPS 관련용어
n 인스트럭션
n CPU가 해야할 작업을 지시하는 정형화된 언어
n C프로그램은 컴파일을 거쳐 Intruction 형태로 바뀜
n CPU는 일련의 매커니즘에 의해 메모리에서 순서대로 Instruction을
읽어오며, 이 과정을 Instruction Patch라고 함
n Instruction은 연산종류를 의미하는 Operation 입력값과 대상이 되는
값인 Operand를 지정하며, Operation 입력은 Operation Code (OP
Code, 연산자)라고 부름
n I-타입 Instruction
n 연산결과가 레지스터에 저장되며, 연산의 입력값인 두 Operand는
Instruction에 직접 상수형태로 기록될 수 있다.
n R-타입 Instruction
n Operand값이 임의의 레지스터에 저장되고 Instruction에는 이
Register를 지정하는 값이 들어갈 수 있다.
MIPS - 개요
n MIPS
n Microprocessor without Interlocked Pipeline Stages
n 밉스 테크놀로지에서 개발한 RISC ISA
n RISC : Reduced Instruction Set Computer
n RISC는 CPU 명령어수를 줄여 H/W구조를 간단히 만드는 방식이다.
n ISA : Instruction Set Architecture)
n 컴퓨터 프로그램과 H/W간 인터페이스에 대한 완전한 명세
도시바에서 생산한
MIPS R4400 프로세서.
n 여러 기능 유닛과 그들 사이의 연결에 초점
n multiplexor 추가 필요 (근원지중 하나를 선택하여 목적지로 보내는
구성요소)
MIPS - CPU Overview
MIPS - 핵심 명령어
n Memory reference: lw, sw
n Arithmetic/logical: add, sub, and, or, slt
n Control transfer: beq, j
MIPS - 피연산자
n MIPS에서 Register
n 32 bit를 word단위로 처리
n 산술명령어는 32bit register중 하나여야함
n 레지스터 개수는 32개로 제한함으로서,전 전기 신호 거리를 짧게
함으로서, 클럭 사이클 시간을 단축시키기 위함
n 레지스터 사용예
n C 코드로, f = (g + h) - (i + j); 을 하는 프로그램이 있을때,
n f,g,h,i,j가 레지스터 $s0, $s1, $s2, $s3, $s4 에 할당되었다는 전제하에
MIPS code로 다음과 같이 나타낼 수 있음
n add $t0, $s1, $s2 #g + h을 t0에 저장
add $t1, $s3, $s4 #i + j을 t1에 저장
sub $s0, $t0, $t1 #t0 t1을 합해 s0에 저장
MIPS - 피연산자
n LW (Load)
n 메모리를 레지스터에 적재
n SW (Store word)
n 레지스터에서 메모리로 데이터를 보내는 명령
n SW의 예
n lw $t0, 32($s3)
n lw $t0, 32($s3)는, 시작주소 S3에 32를 더하고 그 값을 t0에 할당
n add $t0, $s2, $t0
n sw $t0, 48($s3)
n 상수지원
n lw $t0, AddConstant4($s1) #$t0=constant 4
n add $s3, $s3, $t0 #$s3 = $s3 + $t0
MIPS - 레지스터 사용관례
MIPS 레지스터 사용관례
1번 : 어셈블러 전용으로 예약되어 있음
26,27 : 운영체제 전용으로 예약되어 있음.
MIPS - 구현
n MIPS에서의 명령어 실행
n 클럭이 뛴후 레지스터를 읽음, ALU는 바로 출력
n PC를 메모리로 보내고, Memory로부터 명령어 가져온 후,
명령어 필드를 보고, 두개의 레지스터를 읽음
n 레지스터 읽은후, 명령어가 ALU를 사용하는 이유
n 주소계산 : 참조명령어는 주소계산위해 ALU 사용
n 연산 : 산술/논리 명령어는 연산을 위해 ALU 사용
n 비교 : 분기명령어는 비교하기 위해 ALU 사용
n ALU 사용후 명령어 실행을 끝내기 위한 행동
n 참조명령어 : 메모리에 접근한후
n 저장명령어 : 메모리에 접근한후 (데이터저장)
n 적재명령어 : 메모리에 접근한후 (데이터읽기)
n 산술논리 명령어 / 적재명령어 : ALU나 메모리에 온 데이터를
레지스터에 쓰고난후
n 분기명령어 : 다음 명령어의 주소를 갖게한후
MIPS 구현
종류 명령어 예 의미 설명
산술
add add $s1, $s2, $s3 $s1 = $s2 + $s3
피연산자 3개;
오버플로우 탐지
subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3
add immediate addi $s1, $s2, 100 $s1 = $s2 + 100
+ 상수; 오버플로우
탐지
add unsigned addu $s1, $s2, $s3 $s1 = $s2 +$s3
피연산자 3개;
오버플로우 무시
subtract unsigned subu $s1, $s2, $s3 $s1 = $s2 - $s3
add immediate
unsigned
addiu $s1, $s2, 100 $s1 = $s2 + 100
+ 상수; 오버플로우
무시
move from
coprocessor register
mfc0 $s1, $epc $s1 = $epc
예외 PC와 다른 특수
레지스터의 복사
논리연산
and and $s1, $s2, $s3 $1 = $2 & $3
피연사자 3개; bitwise-
AND
or or $s1, $s2, $s3 $1 = $2 | $3
피연산자 3개; bitwise-
OR
and immediate andi $s1, $s2, 100 $1 = $2 & 100 상수와 bitwise-AND
or immediate ori $s1, $s2, 100 $1 = $2 | 100 상수와 bitwise-OR
shift left logical sll $s1, $s2, 10 $1 = $2 << 10 상수만큼 좌측이동
shift right logical srl $s1, $s2, 10 $1 = $2 >> 10 상수만큼 우측이동
MIPS - R형식
n R형식 특징
n 명령어의 길이를 같게 하되, 명령어 종류에 따라 형식을 다르게 함
n 명령어 필드
n op : 연산자(opcode)
n rs : 첫번째 근원지(source) 레지스터
n rs : 두번째 근원지 피연산자 레지스터
n rd : 목적지 레지스터
n shamt : 자리이동량
n funct : 기능, op 필드에서 연산 종류를 구체적으로 지정함
op rs rt rd shamt funct
6 bits 6 bits5 bits 5 bits 5 bits 5 bits
MIPS의
명령어필드
MIPS - R형식
add $t0, $s1, $s2
special $s1 $s2 $t0 0 add
0 17 18 8 0 32
000000 10001 10010 01000 00000 100000
000000100011001001000000001000002 = 0232402016
십진수
이진수
MIPS - I형식
n I 형식 추가
n R형식만으로 명령어를 표현하기 어려워서 I형식이 추가됨
n 수치연산과 데이터 전송명령어에 사용됨
n 16비트 주소를 사용하므로, rs
op rs rt constant or address
6 bits 5 bits 5 bits 16 bits
MIPS – 데이터패스 요소
n 조합소자(조합회로)
n 입력에 대한 출력을 냄
n 예 : ALU
n 상태소자(순차회로)
n 2개의 입력과 1개의 출력을 가짐.
n 상태(state)를 갖는다.
n 예: 메모리, 데이터 메모리 및 레지스터
MIPS - R형식 명령의 데이터패스 동작
add $t1, $t2, $t3 명령어후 활성화된 제어선의 모습
MIPS - R형식 명령의 데이터패스 설명
n 명령어 실행은 한클럭 사이클에 일어나며, 4단계로 나눌 수 있음
n 예 : add $t1, $t2, $t3의 R형식 명령어의 데이터패스 동작
n 1. Instruction을 Instruction Memory에서 가져오고 PC값을 증가시킨다.
n 2. 두 레지스터 $t2, $t3를, Register file(접근할 레지스터 번호를
지정함으로서 읽고 쓸 수 있는 레지스터들의 집합)로 부터 읽는다.
n 3. ALU가 연산을 하게 되는데, 연산된 결과를 저장하기 위한 $t1 선택을
위한 과정으로, 명령어의 funct 필드(비트 5:0)의 기능코드를 참조해 ALU
의 제어신호를 만든다.
n 4. Control의 ALUOp 제어유닛의 입력 유닛인 OPCODE(31:26)를 보고
RegDst라고 하는, 멀티플렉스 제어 신호를 출력으로 보낸다. RegDst를
보고, 명령어 비트 15:11인 (ALU의 결과 값이 레지스터 파일에
기록되는데) 목적지 레지스터에 해당되는 $t1를 선택하고 $t2, $t3의
결과값을 $ t1에 저장함
References
n Computer Architecture A Quantitative Approach (5th edition)

More Related Content

MIPS CPU의 이해 (입문)

  • 1. The Hardware/Software Interface MIPS CPU의 이해 (입문) Instruction & Overview JEONG JIN WOOK 2015. 10. 22
  • 2. Index n MIPS 명령어 n beq, bne n 순환문 n 대소비교.. n MIPS 관련용어 n Register, ALU n Word, ALU n Control Unit, Register Set n PC, Mux .. n MIPS 개괄적 이해 n 핵심명령어 n CPU Overview, 피연산자, 레지스터 사용관례 n MIPS 구현, R형식, I형식 n MIPS의 데이터패스 예
  • 3. MIPS 명령어 – beq, bne n Conditional Branch n beq register, register2, L1 n register, register2가 같으면 L1로 이동 n beq = branch if equal n bne register, register2, L1 n register, register2가 다르면 L1로 이동 n bne = branch not equal
  • 4. MIPS 명령어 - 순환문 n while(save[i]==k) i+=1;의 MIPS 어셈블리 코드 작성 n 주소계산후, 임시 레지스터에 t1의 값을 넣은후, 조건검사후, != 으면 1을 더한후, 처음으로 다시 돌아간다. Loop : sll $t1, $t3, 2 # sll은 shift left logical의 약자로, 왼쪽자리이동을 말함 # $t3를 좌측으로 2비트 이동하면 4를 곱한것과 같음 이를 직관적으로 표현하면, $t1 = i * 4 와 같음 add $t1, $t1, $s6 # $s6의 베이스 주소값을 더함. lw $t0, 0($t1) # 임시 레지스터에 저장 bne $t0, $s5, Exit # save[i]!=k이면 순환문을 빠져 나감 ADDI $S3, 3, 1 # I에 1을 더함 I=I+1 J Loop Exit: # 순환문의 끝에서 맨 앞의 Loop로 되돌아감.
  • 5. MIPS 명령어 – 두 변수간 대소비교 n slt (set on less than) n slt $t0, $s3, $s4 n $t0=1 if $s3 < $s4
  • 6. MIPS 명령어 – 프로시저 지원 n 프로시저 n procedure에 제공되는 인수에 따라 특정 작업을 수행하는 서브루틴 n jar (jump and link instruction) n jal ProcerdureAddress n 지정된 주소로 점프후 다음 명렁어의 주소를 ra register에 저장 n jr (jump register) n jr $ra n 저장된 주소로 무조건 점프 n $a0-$a3 인수레지스터에 전달할 인수값을 저장후, jal X 명령어를 이용해, 프로시저 X로 점프후, 계산결과를 $V0- $V1(반환되는 값을 가지는 레지스터2개)에 저장후 jr $ra(호출한곳의 복귀주소)명령으로 복귀
  • 7. MIPS 명령어 - 산술명령어 n MIPS의 산술명령어는 add 연산을 말하며 다음 형식을 가짐 n add a, b, c #주석 n b + c를 a에 저장하는 명령어 n 피연산자를 3개로 제안함으로서 간단한 설계를 유지함 n 여기서, instruction(연산자)는 add이며, operand(피연산자)는 a,b,c를 말함
  • 8. MIPS 관련용어 n 레지스터 n 레지스터는 순차회로이다. CPU 명령어는 레지스터 기반으로 동작. n 32Bit로 이루어짐 n $0, $1 .. $31 으로 이름지어 있음 n 순차회로는, 플립플롭이라는 메모리 소자가 있으며, 클럭 펄스가 들어오기 전에는 출력단에 변화가 없다. (이런 이유로, 메모리소자라함) n 레지스터(클럭필요)는 입력값 3이 바뀌더라도, 출력값 1이 변하지 않음
  • 9. MIPS 관련용어 n Word n 각 기억 장소에 저장되는 데이터 단위로서, CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹 n ALU n 조합회로이다. 클럭이 필요없으며, 입력값이 바뀌면, 그 값이 바로 반영됨. 다음 클럭이 인가되어야만, 1의 값이 변하게됨. n 각종 산술 연산들과 논리 연산들을 수행하는 회로들로 이루어진 하드웨어 모듈로, 산술연산(+, -, ×, ÷)과 논리연산(AND, OR, NOT, XOR 등) 수행 n Control Unit n ALU에서 수행할 동작지시 n 레지스터간의 데이터 전송 감시 n 명령어를 해석하고 실행하기 위한 제어 신호들(control signals)를 순차적으로 발생하는 H/W 모듈
  • 10. MIPS 관련용어 n Register Set n 명령어 수행 동안 발생하는 임시 데이터 저장 n PC (Program Counter) n 현재 명령어의 주소나 다음에 인출할 명령어를 가짐 n 명령어를 저장하고 주소가 주어지면 해당 명령어를 목적지 주소로 갱신 n PC를 다음 명령어 주소로 증가 n ALU를 통해 다음 명령어 주소로 증가하는 덧셈기 구현가능
  • 11. MIPS 관련용어 n MUX n 레지스터 선택 및 선택된 레지스터 정보를 ALU로 출력하는 선택 논리회로
  • 12. MIPS 관련용어 n 인스트럭션 n CPU가 해야할 작업을 지시하는 정형화된 언어 n C프로그램은 컴파일을 거쳐 Intruction 형태로 바뀜 n CPU는 일련의 매커니즘에 의해 메모리에서 순서대로 Instruction을 읽어오며, 이 과정을 Instruction Patch라고 함 n Instruction은 연산종류를 의미하는 Operation 입력값과 대상이 되는 값인 Operand를 지정하며, Operation 입력은 Operation Code (OP Code, 연산자)라고 부름 n I-타입 Instruction n 연산결과가 레지스터에 저장되며, 연산의 입력값인 두 Operand는 Instruction에 직접 상수형태로 기록될 수 있다. n R-타입 Instruction n Operand값이 임의의 레지스터에 저장되고 Instruction에는 이 Register를 지정하는 값이 들어갈 수 있다.
  • 13. MIPS - 개요 n MIPS n Microprocessor without Interlocked Pipeline Stages n 밉스 테크놀로지에서 개발한 RISC ISA n RISC : Reduced Instruction Set Computer n RISC는 CPU 명령어수를 줄여 H/W구조를 간단히 만드는 방식이다. n ISA : Instruction Set Architecture) n 컴퓨터 프로그램과 H/W간 인터페이스에 대한 완전한 명세 도시바에서 생산한 MIPS R4400 프로세서.
  • 14. n 여러 기능 유닛과 그들 사이의 연결에 초점 n multiplexor 추가 필요 (근원지중 하나를 선택하여 목적지로 보내는 구성요소) MIPS - CPU Overview
  • 15. MIPS - 핵심 명령어 n Memory reference: lw, sw n Arithmetic/logical: add, sub, and, or, slt n Control transfer: beq, j
  • 16. MIPS - 피연산자 n MIPS에서 Register n 32 bit를 word단위로 처리 n 산술명령어는 32bit register중 하나여야함 n 레지스터 개수는 32개로 제한함으로서,전 전기 신호 거리를 짧게 함으로서, 클럭 사이클 시간을 단축시키기 위함 n 레지스터 사용예 n C 코드로, f = (g + h) - (i + j); 을 하는 프로그램이 있을때, n f,g,h,i,j가 레지스터 $s0, $s1, $s2, $s3, $s4 에 할당되었다는 전제하에 MIPS code로 다음과 같이 나타낼 수 있음 n add $t0, $s1, $s2 #g + h을 t0에 저장 add $t1, $s3, $s4 #i + j을 t1에 저장 sub $s0, $t0, $t1 #t0 t1을 합해 s0에 저장
  • 17. MIPS - 피연산자 n LW (Load) n 메모리를 레지스터에 적재 n SW (Store word) n 레지스터에서 메모리로 데이터를 보내는 명령 n SW의 예 n lw $t0, 32($s3) n lw $t0, 32($s3)는, 시작주소 S3에 32를 더하고 그 값을 t0에 할당 n add $t0, $s2, $t0 n sw $t0, 48($s3) n 상수지원 n lw $t0, AddConstant4($s1) #$t0=constant 4 n add $s3, $s3, $t0 #$s3 = $s3 + $t0
  • 18. MIPS - 레지스터 사용관례 MIPS 레지스터 사용관례 1번 : 어셈블러 전용으로 예약되어 있음 26,27 : 운영체제 전용으로 예약되어 있음.
  • 19. MIPS - 구현 n MIPS에서의 명령어 실행 n 클럭이 뛴후 레지스터를 읽음, ALU는 바로 출력 n PC를 메모리로 보내고, Memory로부터 명령어 가져온 후, 명령어 필드를 보고, 두개의 레지스터를 읽음 n 레지스터 읽은후, 명령어가 ALU를 사용하는 이유 n 주소계산 : 참조명령어는 주소계산위해 ALU 사용 n 연산 : 산술/논리 명령어는 연산을 위해 ALU 사용 n 비교 : 분기명령어는 비교하기 위해 ALU 사용 n ALU 사용후 명령어 실행을 끝내기 위한 행동 n 참조명령어 : 메모리에 접근한후 n 저장명령어 : 메모리에 접근한후 (데이터저장) n 적재명령어 : 메모리에 접근한후 (데이터읽기) n 산술논리 명령어 / 적재명령어 : ALU나 메모리에 온 데이터를 레지스터에 쓰고난후 n 분기명령어 : 다음 명령어의 주소를 갖게한후
  • 20. MIPS 구현 종류 명령어 예 의미 설명 산술 add add $s1, $s2, $s3 $s1 = $s2 + $s3 피연산자 3개; 오버플로우 탐지 subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 + 상수; 오버플로우 탐지 add unsigned addu $s1, $s2, $s3 $s1 = $s2 +$s3 피연산자 3개; 오버플로우 무시 subtract unsigned subu $s1, $s2, $s3 $s1 = $s2 - $s3 add immediate unsigned addiu $s1, $s2, 100 $s1 = $s2 + 100 + 상수; 오버플로우 무시 move from coprocessor register mfc0 $s1, $epc $s1 = $epc 예외 PC와 다른 특수 레지스터의 복사 논리연산 and and $s1, $s2, $s3 $1 = $2 & $3 피연사자 3개; bitwise- AND or or $s1, $s2, $s3 $1 = $2 | $3 피연산자 3개; bitwise- OR and immediate andi $s1, $s2, 100 $1 = $2 & 100 상수와 bitwise-AND or immediate ori $s1, $s2, 100 $1 = $2 | 100 상수와 bitwise-OR shift left logical sll $s1, $s2, 10 $1 = $2 << 10 상수만큼 좌측이동 shift right logical srl $s1, $s2, 10 $1 = $2 >> 10 상수만큼 우측이동
  • 21. MIPS - R형식 n R형식 특징 n 명령어의 길이를 같게 하되, 명령어 종류에 따라 형식을 다르게 함 n 명령어 필드 n op : 연산자(opcode) n rs : 첫번째 근원지(source) 레지스터 n rs : 두번째 근원지 피연산자 레지스터 n rd : 목적지 레지스터 n shamt : 자리이동량 n funct : 기능, op 필드에서 연산 종류를 구체적으로 지정함 op rs rt rd shamt funct 6 bits 6 bits5 bits 5 bits 5 bits 5 bits MIPS의 명령어필드
  • 22. MIPS - R형식 add $t0, $s1, $s2 special $s1 $s2 $t0 0 add 0 17 18 8 0 32 000000 10001 10010 01000 00000 100000 000000100011001001000000001000002 = 0232402016 십진수 이진수
  • 23. MIPS - I형식 n I 형식 추가 n R형식만으로 명령어를 표현하기 어려워서 I형식이 추가됨 n 수치연산과 데이터 전송명령어에 사용됨 n 16비트 주소를 사용하므로, rs op rs rt constant or address 6 bits 5 bits 5 bits 16 bits
  • 24. MIPS – 데이터패스 요소 n 조합소자(조합회로) n 입력에 대한 출력을 냄 n 예 : ALU n 상태소자(순차회로) n 2개의 입력과 1개의 출력을 가짐. n 상태(state)를 갖는다. n 예: 메모리, 데이터 메모리 및 레지스터
  • 25. MIPS - R형식 명령의 데이터패스 동작 add $t1, $t2, $t3 명령어후 활성화된 제어선의 모습
  • 26. MIPS - R형식 명령의 데이터패스 설명 n 명령어 실행은 한클럭 사이클에 일어나며, 4단계로 나눌 수 있음 n 예 : add $t1, $t2, $t3의 R형식 명령어의 데이터패스 동작 n 1. Instruction을 Instruction Memory에서 가져오고 PC값을 증가시킨다. n 2. 두 레지스터 $t2, $t3를, Register file(접근할 레지스터 번호를 지정함으로서 읽고 쓸 수 있는 레지스터들의 집합)로 부터 읽는다. n 3. ALU가 연산을 하게 되는데, 연산된 결과를 저장하기 위한 $t1 선택을 위한 과정으로, 명령어의 funct 필드(비트 5:0)의 기능코드를 참조해 ALU 의 제어신호를 만든다. n 4. Control의 ALUOp 제어유닛의 입력 유닛인 OPCODE(31:26)를 보고 RegDst라고 하는, 멀티플렉스 제어 신호를 출력으로 보낸다. RegDst를 보고, 명령어 비트 15:11인 (ALU의 결과 값이 레지스터 파일에 기록되는데) 목적지 레지스터에 해당되는 $t1를 선택하고 $t2, $t3의 결과값을 $ t1에 저장함
  • 27. References n Computer Architecture A Quantitative Approach (5th edition)

Editor's Notes

  • #14: 실행시간 대신에 쓸 수 있는 척도로, 프로그램 실행속도의 단위인, MIPS(Microprocessor without Interlocked Pipeline Stages)와 다름...