Document 7590796

Download Report

Transcript Document 7590796

MIPS ‫پردازنده‬
‫معماری‬
Patterson & Henessi ‫& کتاب‬
Amirkabir University of Technology
Computer Engineering & Information Technology Department
‫مراحل طراحی یک پردازنده‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫با آنالیز مجموعه دستورات نیازمندیهای ‪ DataPath‬را‬
‫مشخص میکنیم‬
‫اجزا ‪ DataPath‬و روش ‪ Clocking‬را انتخاب میکنیم‬
‫اجزا ‪ DataPath‬را در کنار هم قرار میدهیم‬
‫با آنالیز هر دستورالعمل نقاط کنترلی را که مسیر داده را تحت‬
‫تاثیر قرار میدهند را مشخص میکنیم‬
‫منطق ‪Control‬را پیاده سازی میکنیم‬
‫بلوک دیاگرام کلی‬
crystal
oscillator
2-phase
clock
generator
memread
memw rite
ph1
ph2
reset
MIPS
processor
adr
w ritedata
memdata
832
832
832
external
memory
‫اجزای اصلی پردازنده‬
memwrite
memread
controller
aluop[1:0]
reset
32
adr[7:0]
writedata[7:0]
32
32
memdata[7:0]
datapath
alucontrol[2:0]
ph2
funct[5:0]
irwrite[3:0]
regwrite
iord
regdst
memtoreg
pcsource[1:0]
pcen
alusrcb[1:0]
alusrca
zero
op[5:0]
ph1
alucontrol
‫‪Data Path & Control path‬‬
‫‪‬‬
‫‪‬‬
‫‪ Data path‬مسیری است که مشخص میکند داده ها چگونه بین‬
‫پردازنده و سایر المانهای اصلی رد و بدل میشود‪ .‬اجزای آن عبارتند از‪:‬‬
‫‪combinational elements ‬‬
‫‪state (sequential) elements ‬‬
‫‪ Control path‬مشخص میکند که سیگنالهای کنترلی و‬
‫زمانبندی چگونه به المانهای ‪ Data Path‬میرسد‪.‬‬
‫مراحل الزم برای اجرای دستور‬
‫‪ ‬واکشی دستور از محلی که ‪ PC‬اشاره میکند‬
‫‪ ‬خواندن محتوی ‪ 0‬و یا ‪ 1‬ویا ‪ 2‬رجیستر بنا به فیلدهای‬
‫مشخص شده در دستور‬
‫‪ ‬انجام محاسبات ‪ALU‬‬
‫همه دستورات بنوعی به ‪ ALU‬نیاز دارند‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫دستورات انتقال داداه‪ :‬برای محاسبه آدرس‬
‫دستورات محاسباتی‪ :‬برای انجام محاسبه‬
‫دستورات انشعاب‪ :‬برای محاسبه آدرس موثر‬
‫تفاوت در اجرای دستورات‬
‫دستورات انتقال داده‬


load: access memory for read data {ld R1, 0(R2)}
store: access memory for write data {ld 0(R2), R1}
ALU‫دستورات‬



no memory access for operands
access a register for write of result {add R1,R2,
R3}
‫دستورات انشعاب‬



change PC content based on comparison {bnez
R1, Loop}
‫مراحل مورد نیاز دستورات مختلف‬
Fetch Decode
Read
Registers
Compute
Access
Memory
add/sub
X
X
X
X
load
X
X
X
X
X
store
X
X
X
X
X
conditional
branch
X
X
X
X
unconditional
branch
X
X
X
Write
Registers
X
X
‫معماری چندمرحله ای‪Multi Sateged :‬‬
‫‪‬‬
‫اجرای دستورات در ‪ MIPS‬طی مراحل زیر انجام میشود‪:‬‬
‫]‪IR <-- Mem[PC‬‬
‫‪PC <-- PC + 4‬‬
‫‪decode I31..26‬‬
‫]‪ALUop A <-- Reg[IR25..21‬‬
‫]‪ALUop B <-- Reg[IR20..16‬‬
‫‪ALUOut <-- PC + (sgnxtnd(IR15..0)) << 2‬‬
‫))‪ALUOut <-- A + (B or sgnxtnd(IR15..0‬‬
‫))‪if ((op == branch) && (A == B‬‬
‫‪PC <-- ALUOut‬‬
‫)‪if (op == jump‬‬
‫)‪PC <-- PC31..28 || (IR25..0 << 2‬‬
‫]‪MDR <-- Mem[ALUOut‬‬
‫‪//load‬‬
‫‪or‬‬
‫‪Mem[ALUOut] <-- B‬‬
‫)‪if (op == 0‬‬
‫‪Reg[IR15..11] <-- ALUOut‬‬
‫‪Reg[IR20..16] <-- MDR‬‬
‫دستور از محل مشخص شده توسط ‪ PC‬واکشی شده و در ‪IR‬‬
‫قرار داده میشود‪.‬‬
‫دستور موجود در ‪ IR‬دیکد میشود‪ ،‬مقدار بعدی ‪ PC‬محاسبه‬
‫میشود‪ ،‬و اپراندهای موردنیاز از رجیسترفایل خوانده میشود‪.‬‬
‫‪IF‬‬
‫‪Instruction‬‬
‫‪Fetch‬‬
‫‪ID‬‬
‫‪Instruction‬‬
‫‪Decode‬‬
‫عملیات مربوط به ‪ ALU‬در این مرحله انجام میشوند‪.‬‬
‫‪EX‬‬
‫‪Execute‬‬
‫اگر دستور فعلی ‪load‬باشدداده از حافظه خوانده‬
‫میشود‪.‬اگردستور ‪ store‬باشد داده در حافظه نوشته میشود و‬
‫برای سایر دستورات عملی انجام نمیشود‪.‬‬
‫‪MA‬‬
‫‪Memory‬‬
‫‪Access‬‬
‫برای دستوراتی که نتیجه ای تولیدمیکنند‪ ،‬نتایج در رجیستر فایل‬
‫نوشته میشود‪.‬‬
‫تقریبا تمامی دستورات به این مرحله نیاز دارند‪.‬‬
‫‪WB‬‬
‫‪WriteBack‬‬
Data Path ‫اجزای‬
‫ باید شامل المانهای ترکیبی و‬Data Path ‫حداقل اجزای‬
.‫ترتیبی باشد که بتواند عملیات زیر را اجرا نماید‬




Fetch instructions and data from memory
Decode instructions and dispatch them to the
execution unit
Execute arithmetic & logic operations
Update state elements (registers and memory)

‫رجیستر فایل‬
‫ گانه پردازنده در ساختاری به اسم‬32 ‫•رجیسترهای‬
.‫رجیستر فایل نگهداری میشوند‬
‫•هر یک از رجیسترها را میتوان با مشخص کردن شماره‬
.‫آن خواند و یا نوشت‬
•Register File’s I/O structure
–3 inputs derived from current
instruction to specify register
operands (2 for read and 1 for
write)
–1 input to write data into a register
–2 outputs carrying contents of the
specified registers
5
Register
5
numbers
5
Data
32
Read reg 1
Read
data 1
64
Read reg 2
Write reg
Registers
Write data
Read
data 2
32
RegWrite
•Register file’s outputs are always
available on the output lines
•Register write is controlled by
RegWrite lead
‫مدارات ترکیبی‬
input
n
combinational
n
logic
•Output determined entirely by input
•Contains no storage element
output
‫سایر مدارات‬
•Multiplexor selects one out of
inputs
2n
M
2n
X
n
•ALU performs arithmetic & logic
operations
–AND: 000
–OR: 001
–add: 010
–subtract: 110
–set on less than: 111
–other 3 combinations unused
1
U
32
zero
ALU
32
3
32
result
‫اجزای ترتیبی‬
write
•State element has storage (i.e.,
memory)
•State defined by storage content
•Output depends on input and the
state
input
State Element
storage
•Write lead controls storage update
•Clock lead determines time of update
•Examples: main memory, registers, PC
clock
output
‫روش اعمال کالک‬
•Needed to prevent simultaneous
read/write to state elements
•Edge-triggered methodology:
state elements updated at rising
clock edge
State
element
1
clock input
Combinationa
l
logic
State
element
2
‫ورودی خروجی اجزا‬
State
element
1
Combinationa
l
logic
•Combinational elements take input from one state element
at clock edge and output to another state element at the
next clock edge,
•Within a clock cycle, state elements are not updated and
their stable state is available as input to combinational
elements,
•Output can be derived from a state element at the edge of
one cycle and input into the same state at the next.
Datapath Schematic
Data
PC
Instruction
Memory
Address
Register #
Register #
Registers
ALU
ALU
Address
Instruction
Data
Memory
Register #
Data
‫‪Datapath Building Blocks:‬‬
‫واکشی دستورات‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫محتوی ‪ PC‬توسط یک جمع کننده‬
‫با ‪ 4‬جمع میشود تا آدرس دستور‬
‫بعدی محاسبه شود‪.‬‬
‫مقدار ‪ PC‬به حافظه داده میشود تا‬
‫دستور واکشی شده و به سایر‬
‫اجزای ‪ Data Path‬ارسال شود‬
‫فرض میشودکه دستورو داده در‬
‫دو حافظه مجزا نگهداری میشوند‪.‬‬
‫( بعدا به دالیل آن اشاره خواهد‬
‫شد)‬
‫‪ALU‬‬
‫‪Adder‬‬
‫‪4‬‬
‫‪Instruction‬‬
‫‪Read‬‬
‫‪address‬‬
‫‪32‬‬
‫‪Instruction‬‬
‫‪Memory‬‬
‫‪PC‬‬
Datapath Building Blocks:
‫دیکد دستورات‬
‫ و سایر فیلدهای الزم دستور به واحد‬opcode ‫باید مقدار‬
.‫کنترل فرستاده شوند‬
.‫رجیسترهای الزم هم از رجیستر فایل خوانده شوند‬
Control
Unit
Instruction
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
Write Data
Data 2


‫‪Datapath Building Blocks:‬‬
‫‪R-Type Instruction‬‬
‫‪6‬‬
‫‪func‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برای دستورات محاسباتی و منطقی‬
‫که توسط این فرمت نشان داده‬
‫میشوند الزم است تا دو رجیستر از‬
‫رجیستر فایل خوانده شده و داده آنها‬
‫به ‪ ALU‬منتقل شود‪.‬‬
‫عمل ‪ ALU‬بر اساس نوع دستور‬
‫تعیین شده و بر روی محتوی‬
‫‪zero‬‬
‫رجیسترها انجام میشود‪.‬‬
‫نتیجه در رجیستر مقصد نوشته‬
‫میشود‪.‬‬
‫سیگناهای کنترلی باید ایجاد شود تا‬
‫نتیجه در لبه کالک در رجیستر‬
‫مقصد نوشته شود‪ .‬همچنین سیگنال‬
‫‪ ALUop‬باید تولید شود تا عمل‬
‫‪ ALU‬را تعیین کند‪.‬‬
‫‪5‬‬
‫‪5‬‬
‫‪5‬‬
‫‪5‬‬
‫‪rd shamt‬‬
‫‪rt‬‬
‫‪rs‬‬
‫‪6‬‬
‫‪opcode‬‬
‫‪R-Type Format‬‬
‫‪ALUop‬‬
‫‪Read‬‬
‫‪data 1‬‬
‫‪ALU‬‬
‫‪ALU‬‬
‫‪Read reg 1‬‬
‫‪Read reg 2‬‬
‫‪Register‬‬
‫‪Write reg File‬‬
‫‪Read‬‬
‫‪data 2‬‬
‫‪Write data‬‬
‫‪RegWrite‬‬
‫‪5‬‬
‫‪5‬‬
‫‪5‬‬
‫‪Instruction‬‬
‫‪I-Type Instruction: load/store‬‬
‫‪‬‬
‫برای محاسبه آدرس باید‬
‫مقدار افست ‪ 16‬بیتی‬
‫موجود در دستورالعمل‬
‫بصورت یک عدد عالمت‬
‫دار ‪ 32‬بیتی تبدیل شده وبا‬
‫مقدار پایه موجود در ‪rs‬‬
‫جمع شود‪.‬‬
‫‪16‬‬
‫‪5‬‬
‫‪5‬‬
‫‪immediate‬‬
‫‪rt‬‬
‫‪rs‬‬
‫‪6‬‬
‫‪I-Type opcode‬‬
‫)‪LW R2, 232(R1‬‬
‫)‪SW R5, -88(R4‬‬
‫‪32‬‬
‫‪sign‬‬
‫‪extend‬‬
‫‪16‬‬
‫‪I-Type Instruction: load/store‬‬
‫بنابراین اجرای این دستور با اجزای زیر درارتباط خواهد بود‪:‬‬
‫‪‬‬
‫‪Register file‬‬
‫‪‬‬
‫‪‬‬
‫‪Sign extender‬‬
‫‪‬‬
‫‪‬‬
‫برای تبدیل آدرس‬
‫‪ALU‬‬
‫‪‬‬
‫‪‬‬
‫برای دسترسی به رجیستر پایه و رجیستر مقصد‬
‫برای جمع کردن آدرس پایه و مقدار افست توسعه داده شده‬
‫‪Data memory to load/store data‬‬
‫‪‬‬
‫مقادیر آدرس‪ ،‬و داده ورودی یاخروجی باید به حافظه فرستاده شوند‬
‫‪‬‬
‫سیگناهای کنترلی ‪ MemRead, MemWrite, Clock‬باید به حافظه فرستاده شوند‬
Datapath Building Blocks:
load/store
6
I-Type
opcode
5
5
16
rs
rt
immediate
ALUop
MemWrite
5
Instruction
5
5
Read
data 1
Read reg 1
zero
Read reg 2
Write reg
ALU
ALU
Registers
Read
data 2
Write data
Read
data
Data
Memory
Write
data
RegWrite
16
Address
sign
extend
32
MemRead
I-Type Instruction: bne
‫ از آنجائیکه‬.‫ بدست می آید‬PC ‫مقصد دستور انشعاب از جمع مقدار افست با‬
‫ بار به‬2 ‫ نیاز است تا مقدار افست به اندازه‬،‫باشد‬4 ‫این مقصد باید مضربی از‬
.‫سمت چپ شیفت داده شود‬
6

if Reg[rs] != Reg[rd],


I-Type opcode
5
16
rs
rt
immediate
PCcurrent=(PCprevious+4) + Imm<< 2
bne R1, R2, Imm
else if Reg[rs] == Reg[rt]

5
PCcurrent=(PCprevious+4)
1
6
sign
extend
shift
32
32
left 2
ALU
Adder
PC+4

‫‪I-Type Instruction: bne‬‬
‫‪‬‬
‫‪‬‬
‫برای مقایسه رجیسترهای دستور ‪ bne‬از ‪ ALU‬استفاده میشود‪ .‬از‬
‫اینرو نتیجه این مقایسه با سیگنال ‪ Zero‬که در خروجی ‪ ALU‬تعبیه‬
‫شده است مشخص میگردد‪.‬‬
‫بعلت درگیر بودن ‪ ALU‬برای محاسبه آدرس مقصد از یک جمع کننده‬
‫دیگر استفاده میشود‪.‬‬
Datapath Building Blocks: bne
6
I-Type opcode
5
5
16
rs
rt
immediate
Instruction
5
5
Read reg 1
ALUop = subtract
Read
data 1
Read reg 2
control logic
ALU
ALU
Registers
Write reg
Write data
To branch
zero
Read
data 2
RegWrite
16
sign
32
extend
PC+4 from
Instruction Datapath
shift
left 2
ALU
Adder
Branch target
Datapath Building Blocks: bne
Add
4
Add
Shift
left 2
Branch
target
address
ALU control
PC
Instruction
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
Write Data
16
Data 2
Sign
Extend
32
zero (to branch
control logic)
ALU
‫‪Datapath Building Blocks:‬‬
‫‪jump instruction‬‬
‫‪‬‬
‫‪‬‬
‫اجرای دستور ‪ jump‬از طریق المانهای زیر انجام میشود‪:‬‬
‫‪ 26‬بیت مقدار موجود در دستورالعمل به اندازه ‪ 2‬بیت به‬
‫سمت چپ شیفت داده شده و با ‪ 28‬بیت کم ارزش‪ PC‬جایگزین‬
‫میشود‪.‬‬
‫‪Add‬‬
‫‪4‬‬
‫‪4‬‬
‫‪Jump‬‬
‫‪address‬‬
‫‪28‬‬
‫‪Instruction‬‬
‫‪Memory‬‬
‫‪Shift‬‬
‫‪left 2‬‬
‫‪Instruction‬‬
‫‪26‬‬
‫‪Read‬‬
‫‪Address‬‬
‫‪PC‬‬
‫ساخت یک ‪ Data Path‬واحد بااجزای فوق‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫اجزای مورد نیاز برای قسمت های مختلف در کنار هم قرار‬
‫داده شده و سیگناهای کنترلی و مالتی پلکسرهای مورد نیاز به‬
‫آن افزوده میشوند‪.‬‬
‫در طراحی ‪ Single Cycle‬همه مراحل واکشی‪ ،‬دیکد و اجرا‬
‫در یک کالک انجام میشود!‬
‫زمان این کالک برابر خواهد بود با زمان الزم برای طی کردن‬
‫طوالنی ترین مسیر که میتواند زمان زیادی باشد‪.‬‬
‫عالوه برآن امکان به اشتراک گذاشتن سخت افزار برای‬
‫عملیات یکسان وجود ندارد‪.‬‬
Fetch, R, and Memory Access
Portions
Add
RegWrite
ALUSrc ALU control
4
MemtoReg
ovf
zero
Instruction
Memory
PC
MemWrite
Read
Address
Instruction
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
Write Data
Address
ALU
Write Data
Data 2
Sign
16 Extend
Data
Memory Read Data
MemRead
32
‫افزودن واحد کنترل‬
‫‪ ‬این واحد باید ‪:‬‬
‫‪ ‬عملیات‪ Alu‬را مشخص نماید‪ ،‬سیگناهای رجیستر فایل و حافظه را تولید نماید‪ ،‬جریان داده‬
‫از طریق مالتی پلکسرها را کنترل نماید‪.‬‬
‫مالحظات‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مقدار اپکد همیشه در بیت های ‪ 26-31‬قراردارد‬
‫آدرس رجیسترهائی که باید خوانده شوند توسط فیلد ‪( rs‬بیت های ‪ 21-25‬وفیلد ‪( rt‬بیت های‬
‫‪)20-16‬مشخص میشوند‪.‬‬
‫آدرس رجیستری که باید نوشته شوند دریکی از دو مکان زیر است‪ :‬فیلد ‪ rt‬برای دستور ‪ lw‬و‬
‫فیلد ‪ rd‬برای دستورات ‪R-Type‬‬
‫مقدار افست در بیت های ‪ 15-0‬است‪.‬‬
‫‪0‬‬
‫‪5‬‬
‫‪10‬‬
‫‪shamt funct‬‬
‫‪0‬‬
‫‪15‬‬
‫‪20‬‬
‫‪rd‬‬
‫‪rt‬‬
‫‪15‬‬
‫‪address offset‬‬
‫‪20‬‬
‫‪rt‬‬
‫‪0‬‬
‫‪25‬‬
‫‪rs‬‬
‫‪25‬‬
‫‪rs‬‬
‫‪25‬‬
‫‪target address‬‬
‫‪31‬‬
‫‪R-type: op‬‬
‫‪31‬‬
‫‪op‬‬
‫‪I-Type:‬‬
‫‪31‬‬
‫‪op‬‬
‫‪J-type:‬‬
Single Cycle Datapath with Control Unit
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
R-type Instruction Data/Control Flow
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
Load Word Instruction Data/Control Flow
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
Branch Instruction Data/Control Flow
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
Adding the Jump Operation
Instr[25-0]
Shift
left 2
26
1
28
32
0
PC+4[31-28]
0
Add
Jump
ALUOp
Add
Shift
left 2
4
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
‫مزایا و معایب معماری ‪Single Cycle‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫زمان کالک بطور موثر استفاده نمیشود زیرا بر اساس طوالنی ترین‬
‫دستور تنظیم شده است‪ .‬این امر در صورت داشتن دستورات پیچیده مثل‬
‫دستورات اعشاری میتواند خیلی وخیم باشد‪.‬‬
‫فضای بیشتری در روی چیپ الزم دارد زیرا تعداد بیشتری از المانهای‬
‫سخت افزاری الزم دارد‪.‬‬
‫ساده و قابل فهم است‪.‬‬
‫‪Cycle 2‬‬
‫‪Cycle 1‬‬
‫‪Clk‬‬
‫‪Waste‬‬
‫‪sw‬‬
‫‪lw‬‬
‫محاسبه طوالنی ترین دستورالعمل‬
Instruction
class
Instruction
memory
Register
read
ALU
operation
Data
memory
Register
write
Total
(ps)
ALU type
200
50
100
0
50
400
lw
200
50
100
200
50
600
Sw
200
50
100
200
Branch
200
50
100
Jump
200
550
350
200
‫طول کالک باید بر اساس زمان الزم برای طوالنی ترین‬
600 ps .‫دستور طراحی شود‬

‫نگرش ‪Multicycle Datapath‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هر دستور به تعدادی مرحله کوچکتر تقسیم شده و هر یک از این‬
‫مراحل در یک کالک اجرا میشوند‪ .‬بدین ترتیب برای اجرای هر دستور‬
‫به تعدادی کالک کوچک تر نیاز خواهیم داشت‪.‬‬
‫مراحل طوری انتخاب میشوند که کار انجام گرفته در آنها متعادل باشد‪.‬‬
‫در هر مرحله فقط از یکی از بلوک های سخت افزاری اصلی استفاده‬
‫میشود‪.‬‬
‫هر دستور تعداد متفاوتی کالک الزم دارد‪.‬‬
‫فقط به یک حافظه نیاز دارد‪ .‬البته در هر سیکل فقط میتوان یکبار به‬
‫حافظه دسترسی داشت‪.‬‬
‫فقط به یک ‪ ALU/adder‬نیاز دارد‪ .‬البته در هر سیکل بیش از یکبار‬
‫از ‪ ALU‬نمیتوان استفاده نمود‪.‬‬
Write Data
ALU
ALUout
Read Addr 1
Register Read
Read Addr 2Data 1
File
Write Addr
Read
Data
2
Write Data
B
Address
Read Data
(Instr. or Data)
A
IR
Memory
MDR
PC
Multicycle Datapath ‫نگرش‬
‫در این معماری مقادیری که در سیکلهای بعدی دستور مورد نیاز‬
‫ در نتیجه باید اجزای زیر به‬.‫هستند در رجیسترهائی ذخیره میشوند‬
:‫معماری افزوده شوند‬
MDR – Memory Data Register
IR – Instruction Register
ALUout – ALU output register A, B – regfile read data registers

The Multicycle Datapath with Control Signals
Memory
1
1
Write Data
1
Read Data
(Instr. or Data)
0
Write Data
Shift
left 2
Instr[25-0]
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
IR
Address
MDR
PC
Instr[31-26]
0
PC[31-28]
Data 2
Instr[15-0] Sign
Extend 32
Instr[5-0]
Shift
left 2
2
0
1
0
1
zero
ALU
4
0
28
0
1
2
3
ALU
control
ALUout
MemRead
MemWrite
MemtoReg
IRWrite
PCSource
ALUOp
Control
ALUSrcB
ALUSrcA
RegWrite
RegDst
A
IorD
B
PCWriteCond
PCWrite
‫‪Datapath‬‬
‫‪control‬‬
‫‪points‬‬
‫‪...‬‬
‫واحد کنترل ‪Multicycle‬‬
‫‪Combinational‬‬
‫‪control logic‬‬
‫‪...‬‬
‫‪State Reg‬‬
‫‪Next State‬‬
‫‪‬‬
‫‪‬‬
‫‪...‬‬
‫‪Inst‬‬
‫‪Opcode‬‬
‫در معماری ‪ Multicycle‬سیگنالهای کنترل را نمیتوان فقط از روی بیت های دستورالعمل‬
‫بدست آورد‪ .‬زیرا اطالعاتی در مورد سیکلهای دستورالعمل در اپکد آن ذخیره میشود‪.‬‬
‫از اینرو از یک ماشین ‪ FSM‬برای طراحی واحد کنترل استفاده میشود‪.‬‬
‫‪‬‬
‫‪‬‬
‫تعدادی ‪ state‬محدود برای پردازنده فرض میشود که در ‪state reg‬‬
‫ذخیره میشوند‪.‬‬
‫‪ state‬بعدی از روی ‪ state‬فعلی ومقادیر ورودی تعیین میشوند‪.‬‬
load ‫ گانه دستور‬5 ‫مراحل‬
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw





IFetch
Dec
Exec
Mem
WB
IFetch: Instruction Fetch and Update PC
Dec: Instruction Decode, Register Read, Sign
Extend Offset
Exec: Execute R-type; Calculate Memory
Address; Branch Comparison; Branch and Jump
Completion
Mem: Memory Read; Memory Write Completion;
R-type Completion (RegFile write)
WB: Memory Read Completion (RegFile write)
‫مراحل اجرای دستورات مختلف‬
‫‪‬‬
‫‪‬‬
‫اجرای دستورات متفاوت زمانهای مختلفی نیاز دارد‪.‬‬
‫اجرای دستورات ‪ MIPS‬به ‪ 3‬تا ‪ 5‬سیکل نیاز دارند‪.‬‬
‫اجزای اصلی واحد کنترل‬
‫بخش مشترک‬
‫ واکشی‬
‫ دیکد و خواندن دستور‬
‫اجزای مربوط به دستورات‬
S ta rt
I n s tru c tio n fe tc h / d e c o d e a n d re g is te r fe tc h
(F ig u re 5 .3 7 )
M e m o ry a c c e s s
in s tru c tio n s
(F ig u re 5 .3 8 )
R -ty p e in s tru c tio n s
(F ig u re 5 . 3 9 )
B ra n c h in s tru c tio n
(F ig u re 5 .4 0 )
J u m p in s tru ctio n
(F ig u re 5 .4 1 )


‫بخش مشترک‬
‫واکشی‬
‫دیکد و خواندن دستور‬


I n s t r u c t io n d e c o d e /
In s tru c tio n fe tc h
R e g is te r fe tc h
0
M em R e a d
1
A L U S rc A = 0
Io rD
= 0
A L U S rc A = 0
IR W rite
S ta rt
A L U S rc B = 0 1
A L U S rc B = 1 1
A L U O p = 0 0
A L U O p = 0 0
P C W rite
(O p = 'J M P ')
P C S o u rc e = 0 0
M e m o ry re fe re n c e F S M
R - ty p e F S M
B ra n c h F S M
Jum p F S M
( F ig u r e 5 . 3 8 )
( F ig u r e 5 . 3 9 )
( F ig u r e 5 . 4 0 )
( F ig u r e 5 . 4 1 )
F ro m
s ta te 1
( O p = 'L W ') o r ( O p = 'S W ')
M e m o r y a d d r e s s c o m p u t a t io n
2
‫دسترسی به حافظه‬
A L U S rc A = 1
A L U S rc B = 1 0
( O p = 'L W ' )
A L U O p = 00
M e m o ry
M e m o ry
a cce ss
a cce ss
3
‫محاسبه آدرس‬
‫ترتیب خواندن از حافظه‬
‫ خواندن از حافظه‬
‫ ذخیره در رجیستر‬
‫ترتیب نوشتن در حافظه‬
‫ نوشتن در حافظه‬
5
M em R ead
Io rD = 1
M e m W r ite
Io r D = 1
W r it e - b a c k s t e p
4
R e g W r it e
T o s ta t e 0
M e m to R e g = 1
(F ig u r e 5 .3 7 )
R eg D st = 0



F r o m s ta te 1
( O p = R - ty p e )
R-type ‫دستورات‬
E x e c u t io n
6
‫اجرای دستورات‬
‫نوشتن نتیجه در رجیستر‬
A L U S rc A = 1
A L U S rc B = 0 0
A LU O p = 10
R - ty p e c o m p le t io n
7
R egD st = 1
R e g W rite
M e m to R e g = 0
T o s ta te 0
( F ig u r e 5 .3 7 )


Branch ‫دستور‬
F r o m s ta te 1
( O p = 'B E Q ' )
B r a n c h c o m p le t i o n
8
A L U S rc A = 1
A L U S rc B = 0 0
ALUOp = 01
P C W r it e C o n d
P C S o u rc e = 0 1
T o s ta te 0
( F ig u r e 5 . 3 7 )
:‫در یک مرحله اجرامیشود‬
‫ با آدرس‬PC ‫اگرشرط درست باشد‬
.‫دستورانشعاب پر میشود‬


Jump ‫دستور‬
From state 1
(Op = 'J')
Jump completion
9
PCWrite
PCSource = 10
To state 0
(Figure 5.37)
.‫ با آدرس محل انشعاب پر میشود‬PC

‫ماشین حالت کامل‬
In s t r u c tio n
In s tru c tio n
fe tc h
re g is te r
d e c o d e /
fe tc h
0
M e m R e a d
A L U S rc A
Io rD
IR W
S ta rt
=
1
=
0
0
A L U S rc A
r ite
A L U S rc B
A L U O p
A L U S rc B
=
0 1
=
A L U O p
=
=
=
0
1 1
0 0
0 0
P C W rite
M e m o ry
=
0 0
a d d r e s s
( O p = 'J ' )
P C S o u rc e
B ra n c h
c o m p u ta tio n
E x e c u tio n
2
c o m p le tio n
6
=
A L U S rc B
A L U O p
1
=
=
A L U S rc A
1 0
A L U S rc B
0 0
9
A L U S rc B
= 1
=
A L U O p =
0 0
A L U O p
=
( O p = 'L W ')
3
a c c e s s
5
1 0
R -ty p e
7
R e g D s t =
M e m R e a d
Io rD
=
M e m W r ite
Io rD
1
W
r ite - b a c k
4
R e g D s t = 0
R e g W
r ite
M e m to R e g = 1
s te p
=
1
R e g W
1
r ite
M e m to R e g
=
1
0 0
0 1
P C W r it e C o n d
M e m o ry
a c c e s s
=
=
P C S o u rc e
M e m o ry
c o m p le t io n
8
A L U S rc A
A L U S rc A
0
J u m p
c o m p le tio n
=
0 1
P C W
r ite
P C S o u rc e
=
1 0
Finite State Machine for
Control
P C W rite
P C W rite C o n d
Io rD
M em R e ad
M e m W rite
IR W rite
C o n tro l lo g ic
M e m to R e g
P C S o u rc e
ALUO p
O u tp u ts
A L U S rc B
A L U S rc A
R e g W rite
R egD st
NS3
NS2
NS1
In s tru c tio n re g is te r
o p c o d e fie ld
S0
S1
S2
NS0
S3
O p0
O p1
O p2
O p3
Op4
O p5
In p u ts
S ta te re g is te r
‫تمرین‬
‫‪‬‬
‫واحد کنترل ‪ MultiCycle‬را بصورت میکروپروگرام پیاده‬
‫سازی کنید‪.‬‬
‫مزایا و معایب معماری ‪Multicycle‬‬
‫‪‬‬
‫زمان یک کالک براساس طوالنی ترین مرحله تعیین میشود( و نه‬
‫طوالنی ترین دستورالعمل)‪ .‬درنتیجه از کالک بطور موثرتری استفاده‬
‫میشود‪.‬‬
‫‪Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10‬‬
‫‪Clk‬‬
‫‪sw‬‬
‫‪R-type‬‬
‫‪IFetch‬‬
‫‪‬‬
‫‪‬‬
‫‪Mem‬‬
‫‪Exec‬‬
‫‪Dec‬‬
‫‪IFetch‬‬
‫‪lw‬‬
‫‪WB‬‬
‫‪Mem‬‬
‫‪Exec‬‬
‫‪Dec‬‬
‫‪IFetch‬‬
‫این امکان بوجود می آید که در طول یک دستوراز یک بلوک سخت‬
‫افزاری در کالک های مختلف استفاده نمود‪.‬‬
‫نیاز به تعدادی رجیستر داخلی‪ ،‬تعداد بیشتری مالتی پلکسر‪ ،‬وروش‬
‫کنترل پیچیده تری دارد‪.‬‬
‫مقایسه زمان بندی تک سیکل و چند سیکل‬
Single Cycle Implementation:
Cycle 1
Cycle 2
Clk
lw
sw
multicycle clock
slower than 1/5th of
single cycle clock
due to state register
overhead
Multiple Cycle Implementation:
Clk
Waste
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10
lw
IFetch
sw
Dec
Exec
Mem
WB
IFetch
R-type
Dec
Exec
Mem
IFetch
‫فصل بعد‬
MIPS pipelined datapath review
Reading assignment – PH, Chapter 6.16.3