Skip to content

Latest commit

ย 

History

History
46 lines (40 loc) ยท 3.63 KB

MIPS Processor and Pipeline 1.md

File metadata and controls

46 lines (40 loc) ยท 3.63 KB

Processor Architecture Part1 - MIPS Processor and Pipeline 1

์„ ์ˆ˜์ง€์‹

  • MIPS ISA(RISC๊ตฌ์กฐ)์— ๋Œ€ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ดํ•ด๋„๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    1. ์‚ฐ์ˆ /๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜(add,sub,and,sltโ€ฆ๋“ฑ๋“ฑ)
    2. ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜(lw,sw)
    3. ๋ถ„๊ธฐ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜(beq,j)
  • Combinational / Sequential ํšŒ๋กœ์˜ ์ฐจ์ด์ 
    • Combinational : ๋‹จ์ˆœ๊ณ„์‚ฐ๋งŒ ํ•˜๋Š” ํšŒ๋กœ -> ์˜ค์ง ALU
    • Sequential : ์ƒํƒœ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ํšŒ๋กœ(flip-flop ์ด์šฉ)
  • PC register : Program Counter์˜ ์•ฝ์ž๋กœ ํ˜„์žฌ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” Program์˜ ์ฃผ์†Œ ๋˜๋Š” ๋‹ค์Œ์— ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” Program์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค.
  • ALU : CPU์˜ ๊ณ„์‚ฐ ์œ ๋‹›์ด๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค. 1)๋‹จ์ˆœํ•œ ์‚ฐ์ˆ ์—ฐ์‚ฐ,2)load/stote์—ฐ์‚ฐ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐ,3)brnach ์—ฐ์‚ฐ์‹œ ํƒ€๊ฒŸ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • Instruction Memory : decode ๋‹จ๊ณ„์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.
  • Data Memory : ์—ฐ์‚ฐ์— ํ•„์š”ํ•œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ CPU์€ DataPath์™€ Control๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.
  • CPU๊ฐ€ ๋ช…๋ น์–ด ํ•œ ์„ธํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • Fetching Instructions->Decoding->Exec ์ˆœ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

Fetching Instructions

  • ์‰ฝ๊ฒŒ ๋งํ•ด ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋‹จ๊ณ„์ด๋‹ค.
  • ๋จผ์ € PC ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ํ˜„์žฌ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ Adder์— ์ „๋‹ฌํ•˜์—ฌ 4๋ฅผ ๋”ํ•œ๋‹ค.
  • ์œ„ ๋™์ž‘์ด ๊ณง PC = PC + 4๋ฅผ ํ•˜์—ฌ PC ๋ ˆ์ง€์Šคํ„ฐ์— ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด ์—…๋ฐ์ดํŠธ๋Š” ํ•ญ์ƒ ์ด๋ค„์ง€๋Š” ๊ฒƒ์ด๊ธฐ์— ์ด๋ฅผ ์ œ์–ดํ•˜๋Š” Control Signal์ด ๋”ฐ๋กœ ํ•„์š”์—†๋‹ค.

Decoding Instructions

  • ์ฒซ๋ฒˆ์งธ, fetched๋œ ๋ช…๋ น์–ด์˜ opcode์™€ function filed๋ฅผ ๊ฐ๊ฐ Control Unit์œผ๋กœ ๋ณด๋‚ด์ฃผ๋Š” ๊ณผ์ •์ด๋‹ค.
  • ๋‘๋ฒˆ์งธ, ํ•ด๋‹น ๋ช…๋ น์–ด์˜ rs,rt ๊ฐ’์„ IM์—์„œ ์ฝ์–ด์˜จ๋‹ค.

Exec1 - R ํƒ€์ž… ๋ช…๋ น์–ด

  • R ํƒ€์ž…์˜ ๊ฒฝ์šฐ, rs rt๋Š” ๋ฌผ๋ก  ํ•ด๋‹น ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” rd ๋ ˆ์ง€์Šคํ„ฐ๊นŒ์ง€ ์กด์žฌํ•œ๋‹ค.
  • ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ช…๋ น์–ด๋กœ๋ถ€ํ„ฐ rs rt ๋‘๊ฐ€์ง€ ๊ฐ’์„ ๋ฐ›๊ณ , ํ•ด๋‹น ๊ฐ’์„ CPU์˜ ๊ณ„์‚ฐ๊ธฐ์ธ ALU์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.
  • ์ดํ›„, ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ overflow ๋˜๋Š” zero๊ฐ’(false)์ด ์•„๋‹Œ ์ด์ƒ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ IM์œผ๋กœ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.๋‹ค์‹œ ๋˜๋Œ์•„๊ฐ„ ๊ฐ’์ด ์“ฐ์—ฌ์ง€๋Š” ์ฃผ์†Œ๋Š” rd์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ํ”ผ๋“œ๋ฐฑ ์ž‘์šฉ์„ ๋งค๋ฒˆ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, RegWrite๋ผ๋Š” ์‹ ํ˜ธ๋ฅผ ํ†ตํ•ด์„œ ์ œ์–ด๋ฉ๋‹ˆ๋‹ค.

Exec2 - I ํƒ€์ž… Load,Store

  • I ํƒ€์ž…์˜ ๊ฒฝ์šฐ, rd ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€ํ‘œ์ ์ธ ์—ฐ์‚ฐ์œผ๋กœ load์™€ store๊ฐ€ ์กด์žฌํ•œ๋‹ค.(lw,sw)
  • load์˜ ๊ฒฝ์šฐ, rt ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ฃผ์†Ÿ๊ฐ’์— ์žˆ๋Š” ๊ฐ’์„ rs์— ์ €์žฅํ•œ๋‹ค.
  • store์˜ ๊ฒฝ์šฐ, rs์— ์žˆ๋Š” ๊ฐ’์„ rt์˜ ์ฃผ์†Ÿ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.
  • ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด, Read Addr 1,2๋ฅผ ํ†ตํ•ด rs,rt์˜ ๊ฐ’๋“ค์ด IM์— ๋“ค์–ด์˜ค๋ฉฐ store์˜ ๊ฒฝ์šฐ, ๊ฐ’์„ ์ €์žฅํ•  ์ฃผ์†Œ๋ฅผ Read Data1์œผ๋กœ ๋ณด๋‚ด ALU๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ์‹œํ‚ค๋Š” ๋™์‹œ์— Read Data2๋Š” ๋ฐ”๋กœ ํ•ด๋‹น ์ฃผ์†Œ์— rs ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ์‹œํ‚จ๋‹ค. load์—ฐ์‚ฐ์€ ReadData๋กœ ์ฝ์€ rs์˜ ์ฃผ์†Ÿ๊ฐ’์„ ALU๋กœ ๋ณด๋‚ด ์ตœ์ข… ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ํ•ด๋‹น ์ฃผ์†Œ์— ์กด์žฌํ•˜๋Š” ๊ฐ’์„ DM์œผ๋กœ feedbackํ•˜์—ฌ rt์— ์ €์žฅํ•œ๋‹ค.