Skip to content

Instantly share code, notes, and snippets.

@jinny-l
Last active January 9, 2023 05:43
Show Gist options
  • Save jinny-l/08799282859a6e70135a2f9c12c5fe2c to your computer and use it in GitHub Desktop.
Save jinny-l/08799282859a6e70135a2f9c12c5fe2c to your computer and use it in GitHub Desktop.
Jinny - CS03

๐Ÿ”Œ CS03 - CPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ

CPU ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„

์‹คํ–‰ ์˜ˆ์‹œ

ํ•˜๊ธฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ๊ณ„์–ด(๋น„ํŠธ์ฝ”๋“œ)๋กœ ๋ฐ”๊ฟ” CPU์— ์ง์ ‘ ์ „๋‹ฌํ•ด์„œ ์‹คํ–‰
(ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๊พธ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ํ•„์š”๋Š” ์—†์Œ)

0x0000b MOV R4, 0x00A0
0x0010b MOV R5, 0x0002
0x0020b LOAD R1, R4, R5
0x0030b ADD R2, R1, #4
0x0040b SUB R3, R1, R2
0x0050b STORE R3, R4, #4

๐Ÿคซ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—...

์—ฌ๋Ÿฌ Instruction์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์—ˆ์ง€๋งŒ, ์ผ๋‹จ LOAD ๋ช…๋ น์–ด 1๊ฐœ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ
์ดํ•ดํ•˜๊ธฐ ๋„˜ ์–ด๋ ต๋‹ค...(์‚ด๋ ค์ฃผ์„ธ์š” ๐Ÿฅ•)

โœ… ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ

๋ช…๋ น์–ด ํ˜•์‹

Instruction 4bit 3bit 3bit 3bit 3bit ์„ค๋ช…
LOAD 0001 dst.Reg base.Reg 000 offset.Reg (base. Reg + offset. Reg) ์ฃผ์†Œ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์„ ์ฝ์–ด์„œ dst. Reg๋กœ ๋กœ๋“œํ•œ๋‹ค.

(๊ฐ Register๋Š” 3bit๋กœ R1๋ถ€ํ„ฐ R7๊นŒ์ง€ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.)

๋ช…๋ น์–ด ๋น„ํŠธ์ฝ”๋“œ ์˜ˆ์‹œ

[LOAD, R1, R2, R3] => [0001 001 010 000 011]

โŒจ๏ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ์‚ฌํ•ญ

CPU ์š”๊ตฌ์‚ฌํ•ญ

  • ๊ธฐ๋ณธ ์ฒ˜๋ฆฌ ๋‹จ์œ„ Word๋Š” 2๋ฐ”์ดํŠธ ๊ธฐ์ค€
  • Register๋Š” PROGRAM-COUNT ์—ญํ• ์„ ํ•˜๋Š” PC, ๊ทธ ์™ธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” 7๊ฐœ R1-R7 ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํฌํ•จ
  • ALU๋Š” ๋‘ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๊ฐ’ A, B๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๋ชฉ์  ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ
  • ALU ๊ณ„์‚ฐ์—๋Š” ADD ๋ง์…ˆ, SUB ๋บ„์…ˆ๊ณผ AND ๋…ผ๋ฆฌ๊ณฑ, OR ๋…ผ๋ฆฌํ•ฉ ์—ฐ์‚ฐ๋งŒ ์กด์žฌ

๋ฉ”์†Œ๋“œ ์š”๊ตฌ์‚ฌํ•ญ

  • reset() ํ•จ์ˆ˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ๋ชจ๋‘ ์ง€์šฐ๊ณ , PC ๊ฐ’๋„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
  • fetch() ํ•จ์ˆ˜๋Š” ํ˜„์žฌ PC ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฆฌํ„ดํ•˜๊ณ  PC ์นด์šดํŠธ๋ฅผ +1 ์ฆ๊ฐ€์‹œํ‚ด
  • execute(Int16 IR) ํ•จ์ˆ˜๋Š” ์ „๋‹ฌํ•œ ๋ช…๋ น์–ด๋ฅผ ์–ด๋–ค ๋ช…๋ น์ธ์ง€ ๋ถ„์„ํ•ด์„œ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌ
  • dump() ํ•จ์ˆ˜๋Š” REGISTER๋“ค ๊ฐ’์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ๋ฆฌํ„ด
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment