컴퓨터구조 – 중간시험 (답안지) 부분점수 (사소한 실수면 -1)

Slides:



Advertisements
Similar presentations
1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
Advertisements

Family 의 개요 의 외부 Pin 기능과 내부 기능 Memory 구조 Timing 2 장 8051 의 구조.
1 8 장 대형 순차회로 문제의 해법 1) 시프트 레지스터 2) 카운터 3)ASM 도를 이용한 설계 4)One Hot encoding 5) 복잡한 예제.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
MIPS Programing Model 및 프로그램
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
기본 컴퓨터의 구조와 설계 Lecture #5.
기본 컴퓨터 프로그래밍 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
2 Part 전자계산기 구조 1. 논리 회로 2. 자료 표현 및 연산 3. 명령어 및 프로세서 4. 명령 수행 및 제어 5.
10장 주변장치 (PIO) Slide 1 (of 28).
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
연습문제풀이/도움말.
DSP와 TMS320F28x의 이해.
제4장 제어 유니트 4.1 제어 유니트의 기능 4.2 제어 유니트의 구조 4.3 마이크로 명령어의 형식
제11강 중앙처리장치 2.
7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29).
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
PowerPC ABI 김종화.
컴퓨터 구조.
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
운영체제 (OS: Operating System)
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Chapter 7. Pentium Processor
Chapter 08 제어장치와 마이크로 오퍼레이션.
4장 컴퓨터의 중앙 처리 장치 하 효 순.
Computer Architecture
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Chapter 06 명령어와 번지지정 방식.
ARM 명령어 집합 Lecture #7.
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제 2장 컴퓨터동작의 기본 개념.
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
CHAPTER 03. 컴퓨터 구조 컴퓨터 시스템의 구성과 동작 원리_컴퓨터 시스템에 대한 근본적 이해
Chapter 4 The Von Neumann Model.
데이터의 표현과 컴퓨터 연산 Prof. Jae Young Choi (최재영 교수)
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
Computer System Architecture
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
1 컴퓨터 구조 IT CookBook, 컴퓨터 구조와 원리 2.0.
공용위원회 e-시스템을 이용한 심의신청하기
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
2 수의 체계 IT CookBook, 디지털 논리회로.
Chapter 02 수의 체계.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
제03장 정보의 표현.
임베디드 하드웨어 Lecture #6.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Lecture 7 7-Segment LED controller using u-controller
4-1. 명령어 형식.
제 1 강 컴퓨터의 구조.
Presentation transcript:

컴퓨터구조 – 중간시험 (답안지) 부분점수 (사소한 실수면 -1) MIPS ISA는 필요한 소수의 instruction만을 제공하기 때문에 MIPS assembly language에서는 pseudoinstruction을 제공하여 보다 다양한 instruction을 가지고 프로그래밍을 하게 해준다. 다음에 주어지는 pseudoinstruction들을 MIPS ISA가 제공하는 instruction으로 바꾸어라. 단, 다음의 MIPS instruction과 register와 constant convention을 참조하시오. [총 20점] $zero : constant value 0 (hardwired) $at : assembler temporary register r1, r2, r3, $t0, $t1, $t2, $t3, $t4, $t5 : MIPS integer registers Imm16, small : 16-bit constant big : 32-bit constant (단, big_hi는 big[31:16]으로 16-bit constant, big_lo는 big[15:0]으로 16-bit constant를 의미한다고 가정하시오) Label, L : branch target add r1, r2, r3 // r1 = r2 + r3 addi r1, r2, Imm16 // r1 = r2 + Imm16 beq r1, r2, Label // if (r1 = r2) go to Label bne r1, r2, Label // if (r1 != r2) go to Label slt r1, r2, r3 // if (r2 < r3) r1 = 1 else r1 = 0 lui r1, Imm16 // r1[31:16] = Imm16; r1[15:0] = 0 ori r1, r2, Imm16 // r1 = r2 bit-wise-or Imm16 lw r1, Imm16(r2) // r1 = Memory[r2+Imm16] 부분점수 (사소한 실수면 -1) (a) clear $t0 // $t0 = 0 beq $t1, small, L // if ($t1 = small) go to L addi $t0, $t2, big // $t0 = $t2 + big bge $t5, $t3, L // if ($t5 >= $t3) go to L lw $t5, big($t2) // $t5 = Memory[$t2+big] => add $t0, $zero , $zero 혹은 addi $zero 0 => addi $at, $zero , small beq $t1, $at , L => lui $at, big-hi ori $at, $at , big-lo add $t0, $t2, $at => slt $at, $t5 , $t3 beq $at, $zero , L => lui $at, big-hi ori $at, $at , big-lo lw $t5, 0($at) Pseudoinstruction meaning MIS ISA translation [각 4점]

음수 양수 +무한대 최소한 위의 그룹핑이 되면 2점 sign exponent significand 2. 다음의 IEEE 754 floating point standard에 따른 bit representaion을 참조하여 주어진 값을 작은 수 부터 큰 수 순으로 나열하시오. [10점] 부분점수 (0, 2, 10) normalized: exponent != 0 and exponet != 1인경우, 아래와 같은 값 (–1)sign x (1 + significand) x 2exponent – bias (single precision FP bias = 127) denormalized: exponent = 0인 경우, 아래와 같은 값 (–1)sign x (significand) x 21 – bias (single precision FP bias = 127) special: exponent = 11111111, significand = 0인 경우, sign에따라 infinity (a) 1 11100111 01100000000000000000000 (b) 1 11100111 01000000000000000000000 (c) 1 00000000 01000000000000000000000 (d) 0 00000000 10000000000000000000000 (e) 0 00100110 11111111111111111111111 (f) 0 00100111 00000000000000000000000 (g) 0 11111111 00000000000000000000000 a b c d e f g 음수 양수 +무한대 최소한 위의 그룹핑이 되면 2점 sign exponent significand 31 30 23 22 0

step name R-type memory reference branch (beq) jump instruction fetch IR <= Memory[PC] PC <= PC + 4 instr decode/ register fetch A <= Reg[IR[25:21]], B <= Reg[IR[20:16]] ALUOut <= PC + (sign-extend(IR[15:0]) <<2) execution/addr calculation ALUOut <= A op B ALUOut <= A+ sign-extend(IR[15:0] If (A==B) PC <= ALUOut PC<={PC[31:28], (IR[25:0]),2’b00 memory access Reg[IR[15:11]] <= ALUOut Load: MDR<=Memory[ALUOut] Store: Memory[ALUOut]<=B X memory read completion Reg[IR[20:16]] <= MDR 3. 위 표는 MIPS 명령어의 Multicycle 실행을 위한 5-단계를 RTL 수준으로 설명하고 있다. 뒷 장 의 datapath 를 참조하여 다음 질문에 답하시오. [총 20점] (a) 위 표에 빠진 4 부분을 표에 채우시오. R type 명령어의 destination register 는 IR[15:11] 이며 load 명령어의 destination register 는 IR[20:16] 임. memory reference 명령어의 memory access step 은 load 와 store 로 나누어 설명. [10점] 부분점수 부여 (0, 2, 5, 7, 10) (b) 뒤에 나오는 datapath를 사용할 때, Step 2(decode) 단계의 ALUOut <= PC + (sign-extend(IR[15:0]) <<2) 작업을 Step 3으로 미루면 어떤 문제가 발생하는가? [5점] 부분점수 고려 (2, 5) R-type, memory-ref, branch (단, jump 제외) 명령어가 모두 ALU를 사용하는 operation을 3단계에서 하고 있으므로 multicycle 구조에서 2단계에서 수행하던 계산을 옮겨오면 ALU를 두번에 걸쳐 사용하므로 그 결과를 중간에 저장할 internal register가 없으며 3단계를 1 cycle만에 수행할 수 없다. (1 cycle이 길어진다는 취지로 쓴 경우 부분 점수 2점) 실제 2단계에서 하는 계산이 branch에만 필요하므로 branch의 3단계에서 수행하도록 하여도 마찬가지로 ALU의 A==B (subtract)의 계산과 중복되어 ALU를 사용하므로 앞의 이유와 마찬가지로 3단계를 1 cycle만에 수행할 수 없다. (c) Step 2의 주소계산, ALUOut <= PC + (sign-extend(IR[15:0]) <<2) 에서는 offset 부분을 shift(<<2)하여 4를 곱한 값으로 만드나 Step 3의 memory reference 에서는 주소값을 shift 없이 그대로 사용하는 이유는 무엇인가? [5점] 부분점수 고려 (2, 5) – (하나만 제대로 설명했을 경우 2점) Step 2의 주소 계산은 branch target 주소를 계산하는 것이므로 MIPS명령어가 모두 4 byte 크기를 가지고 명령어 4 byte 주소에 align되어 있으므로 branch target 주소는 항상 4의 배수인점을 고려하여 PC-relative addressing mode가 immediate을 2bit shift하여 사용하도록 되어 있다. Step3의 주소 계산은 memory reference (lw, sw)를 위한 데이터 주소 계산이며 데이터는 1 byte단위의 주소별로 접근이 가능한 점을 고려하여 base-addressing mode에서 shift없이 주소를 계산하도록 되어 있다.

(6) (5) (4) (3) (1) (2) R e a d r g i s t 1 2 W A L U Z o S n x 6 3 I c [ – ] 5 l M h f P C B O m y D 4 p 8 - J (5) (4) (3) (1) (2)

1 2 3 4 5 6 instruction fetch x decode/ r-fetch 17 18 exe/addr calc 4. 앞 장의 datapath 그림을 참조하여 다음 명령어가 실행될 때 그림에 표시된 datapath에 정의되는 값을 채우시오. 각 register는 자기 번호를 초기 값으로 갖고 있다고 가정, 즉 $17의 초기 값은 17임. (의미 없는 값은 X로 표시, 모르는 메모리 값은 M으로 표시) [총 20점] 예) add $8, $17, $18 (opcode=0, rs=17, rt=18, rd=8, shamt=0, funct=32) a) beq $7, $8, 503 (opcode=4, rs=7, rt=8, immediate=503) [10점] - 숫자로 써야 할곳만 제대로 썼는지 검사, X는 뭐라고 썼든지 내버려둘것 – 부분점수 (0, 2, 5, 7 10) b) lw $3, 13($2) (opcode=35, rs=2, rt=3, immediate=13) [10점] – 숫자로 써야 할곳만 제대로 썼는지 검사, X는 뭐라고 썼든지 내버려둘것 – 부분점수 (0, 2, 5, 7 10) 1 2 3 4 5 6 instruction fetch x decode/ r-fetch 17 18 exe/addr calc mem access 8 mem finish 1 2 3 4 5 6 instruction fetch x 100 104 decode/ r-fetch 7 8 2012 exe/addr calc 2012, 혹은 x mem access mem finish 1 2 3 4 5 6 instruction fetch x 10 14 decode/ r-fetch exe/addr calc 13 mem access mem finish

I n s t r u c t i o n f e t c h I n s t r u c t i o n d e c o d e / r g i s t e r f e t c h M e m R e a d A L U S r c A = 1 I o r D = I R W r i t e A L U S r c A = 11 00 S t a r t A L U S r c B = 1 A L U S r c B = A L U O p = A L U O p = P C W r i t e P C S o u r c e = M e m o r y a d d r e s s B r a n c h J u m p c o m p u t a t i o n E x e c u t i o n c o m p l e t i o n c o m p l e t i o n 2 6 8 9 A L U S r c A = 1 A L U S r c A = 1 A L U S r c A = 1 P C W r i t e A L U S r c B = 10 A L U S r c B = A L U S r c B = 01 P C S o u r c e = 10 A L U O p = A L U O p = A L U O p = 10 P C W r i t e C o n d P C S o u r c e = M e m o r y M e m o r y a c c e s s a c c e s s R - t y p e c o m p l e t i o n 3 5 7 R e g D s t = 1 M e m R e a d M e m W r i t e I o r D = 1 I o r D = 1 R e g W r i t e M e m t o R e g = M e m o r y r e a d c o m p l e t o n s t e p 4 1 R e g D s t = R e g W r i t e M e m t o R e g = 5. 위 그림은 MIPS control logic 을 finite state machine으로 표시한 것이다. 앞의 datapath 그림을 참조하여 각 state에서 보내는 control signal 값 중 검은 박스( )로 표시된 부분의 값을 정하여 위 그림에 표시하시오. (총 10개) [30점] 하나당 3점부여 ALUOp 의 의미는 (00: add, 01: sub, 10: funct field decides) 으로 정한다.