Newest Viewed Downloaded

Top-level block diagramSC_MODULE(INST_DECODE) cond (4) reset inst (32) reg_rd_idx_1 (4) reg_rd_idx_2 (4) reg_wr_idx (4) reg_reg_wr is_imm imm_val (32) alu_op (4) data_mem_rw cmp branch

Lab. 6 Instruction Decoder

디지털 시스템 설계 Fall 2011 @ CBNU

Top-level block diagram

SC_MODULE(INST_DECODE) cond (4) reset inst (32) reg_rd_idx_1 (4) reg_rd_idx_2 (4) reg_wr_idx (4) reg_reg_wr is_imm imm_val (32) alu_op (4) data_mem_rw cmp branch

Module Input/Output

Input reset Reset이 1일때 모든 출력값을 0으로 inst instruction memory에서 읽은 data output cond 명령어의 condition field reg_rd_idx_1 읽어야 할 첫 번째 register의 index reg_rd_idx_2 읽어야 할 두 번째 register의 index reg_wr_idx Update(write)해야 할 register index reg_wr register file에 data를 써야 할 때 (즉 update해야 할 때) 1, 그 외 0 is_imm 명령어에 immediate 값이 들어 있으면 1, 그 외 0 imm_val 명령어에 들어 있는 immediate 값 alu_op 사용해야 할 ALU의 operation data_mem_rw 메모리에 값을 쓸 때 (STR 명령어) 1, 그 외 0 cmp 현재 명령어가 비교 명령어 (CMP) 일 때 1, 그 외 0 branch 현재 명령어가 branch 명령어 (B, BEQ, BNE) 일 때 1, 그 외 0

ARM Instruction Format

The Conditional Field

Data Processing Instructions (1/3)

구현해야 할 명령어 ADD, SUB, MOV, AND, ORR, CMP

Data Processing Instructions (2/3)

Operand들이 항상 전부 사용되는 것은 아님 MOV instruction: Rn register 사용하지 않음 CMP instruction: Rd register 사용하지 않음

Data Processing Instructions (3/3)

Immediate type 명령어 operand2의 shift operation을 decoding하여 immediate 값을 구해야 함 수업 홈페이지에 링크된 rotate() 함수를 이용 #define ROT_LEFT 0x00 #define ROT_RIGHT !ROT_LEFT uint32_t INST_DECODE::rotate(uint32_t invalue, uint32_t places, uint32_t direction)

Load/Store Instructions for Single Word

Memory access의 target address 계산 12-bit immediate의 경우 up/down bit에 따라 base 주소에서 뺄 것인지 더할 것인지를 결정 Single word transfer만 고려할 것

Branch Instructions

구현해야 할 명령어 B, BNE, BEQ Offset 24-bit signed word offset을 32-bit로 변환하기 위해 sign-extension을 해야 함

실습 과제 (1/2)

INST_DECODE module을 테스트할 수 있는 SystemC 프로그램을 작성 Top level에서 아래의 세 모듈을 연결 INST_FETCH, MEM, INST_DECODE INST_DECODE module SC_METHOD를 이용 Top level 앞에서 설명한 명령어들이 제대로 decoding되는지 확인 명령어 별로 immediate나 offset 등이 제대로 decoding되는지 수업 홈페이지의 ex1.bin, ex2.bin을 이용하여 테스트 ex1.bin이나 ex2.bin은 MEM module에서 init_mem() 함수를 이용하여 메모리 내용을 초기화 ex1.bin, ex2.bin, init_mem()의 소스 코드는 홈페이지에 있음

실습 과제 (2/2)

ex1.bin mov r0, #1 mov r1, #2 add r2, r0, r1 sub r3, r1, r0 ex2.bin mov r0, #0 loop: add r0, r0, #1 cmp r0, #3 bne loop

Showing 1 - 12 of 12 items Details

Name: 
lab6_instruction_decoder
Author: 
Microsoft Corporation
Company: 
R&D
Description: 
Top-level block diagramSC_MODULE(INST_DECODE) cond (4) reset inst (32) reg_rd_idx_1 (4) reg_rd_idx_2 (4) reg_wr_idx (4) reg_reg_wr is_imm imm_val (32) alu_op (4) data_mem_rw cmp branch
Tags: 
reg | inst | 명령어 | mem | cmp | data | idx | decode
Created: 
10/5/2006 4:04:58 AM
Slides: 
12
Views: 
1
Downloads: 
0
Rating: 
0


> Comment



Share this presentation
|

Comments

Share this presentation:

|
Sitemap