Mano Machine μ£Όμš” κ°œλ… 정리

마이크둜 μ—°μ‚° μ œμ–΄ μ‹ ν˜Έ

FGO (Full Gate Operate)

AC(Accumulator)의 값을 ν™•μΈν•˜λŠ” 쑰건뢀 λΆ„κΈ° μ—°μ‚°μž…λ‹ˆλ‹€:

  • ACκ°€ 0이 아닐 경우: λ‹€μŒ 마이크둜λͺ…λ Ήμ–΄λ‘œ μ§„ν–‰
  • ACκ°€ 0일 경우: NextU+2 μœ„μΉ˜μ˜ 마이크둜λͺ…λ Ήμ–΄λ‘œ κ±΄λ„ˆλœλ‹ˆλ‹€

S (Subtract)

ACμ—μ„œ M[AR]의 값을 λΉΌλŠ” 마이크둜 μ—°μ‚°μœΌλ‘œ, κ²°κ³ΌλŠ” AC에 μ €μž₯λ©λ‹ˆλ‹€. 2의 보수 연산을 μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„λ©λ‹ˆλ‹€.

μ œμ–΄ μ‹ ν˜Έ

NextU (Next ΞΌ-instruction)

λ‹€μŒ 마이크둜 λͺ…λ Ήμ–΄λ‘œ μ§„ν–‰ν•˜λŠ” μ œμ–΄ μ‹ ν˜Έμž…λ‹ˆλ‹€. Control Address Register(CAR)의 값을 1 μ¦κ°€μ‹œμΌœ λ‹€μŒ 마이크둜 λͺ…λ Ήμ–΄ μ£Όμ†Œλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

Next ins (Next instruction)

ν˜„μž¬ λͺ…λ Ήμ–΄μ˜ 싀행을 μ™„λ£Œν•˜κ³  λ‹€μŒ 기계어 λͺ…λ Ήμ–΄λ‘œ μ§„ν–‰ν•˜λŠ” μ œμ–΄ μ‹ ν˜Έμž…λ‹ˆλ‹€. Program Counter(PC)λ₯Ό 1 μ¦κ°€μ‹œν‚€κ³  μƒˆλ‘œμš΄ λͺ…λ Ήμ–΄ 사이클을 μ‹œμž‘ν•©λ‹ˆλ‹€.

ν•˜λ“œμ›¨μ–΄ ꡬ성 μš”μ†Œ

SC (Sequence Counter)

λ§ˆμ΄ν¬λ‘œν”„λ‘œκ·Έλž¨ λͺ…λ Ήμ–΄μ˜ μˆœμ„œλ₯Ό μ œμ–΄ν•˜λŠ” 3λΉ„νŠΈ μΉ΄μš΄ν„°μž…λ‹ˆλ‹€:

  • λͺ…λ Ήμ–΄ 사이클 μ‹œμž‘ μ‹œ 0으둜 μ΄ˆκΈ°ν™”
  • T0λΆ€ν„° T7κΉŒμ§€μ˜ 타이밍 μ‹ ν˜Έ 생성
  • 클럭 νŽ„μŠ€λ§ˆλ‹€ 1μ”© μ¦κ°€ν•˜λ©° λ§ˆμ΄ν¬λ‘œμ—°μ‚°μ˜ 타이밍 μ œμ–΄

C (Carry flip-flop)

λΊ„μ…ˆ μ—°μ‚° μ‹œ 2의 보수 계산을 μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν”Œλ¦½ν”Œλ‘­μž…λ‹ˆλ‹€:

  • λΊ„μ…ˆ μ‹œμž‘ μ‹œ: C = 1 (Set)
  • λΊ„μ…ˆ μ’…λ£Œ μ‹œ: C = 0 (Clear)

Executed Micro Operations

CPUκ°€ μ‹€μ œλ‘œ μ‹€ν–‰ν•˜λŠ” 기본적인 λ™μž‘λ“€μ„ μ˜λ―Έν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ADD λͺ…λ Ήμ–΄ μ‹€ν–‰ μ‹œ λ‹€μŒκ³Ό 같은 마이크둜 연산듀이 순차적으둜 μ‹€ν–‰λ©λ‹ˆλ‹€:

  1. T0: AR ← PC (μ£Όμ†Œ λ ˆμ§€μŠ€ν„°μ— ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° κ°’ μ €μž₯)
  2. T1: IR ← M[AR], PC ← PC + 1 (λͺ…λ Ήμ–΄ κ°€μ Έμ˜€κΈ° 및 PC 증가)
  3. T2: AR ← IR(0-11) (μ˜€νΌλžœλ“œ μ£Όμ†Œ κ°€μ Έμ˜€κΈ°)
  4. T3: DR ← M[AR] (데이터 κ°€μ Έμ˜€κΈ°)
  5. T4: AC ← AC + DR (μ‹€μ œ λ§μ…ˆ μˆ˜ν–‰)

μ™œ hexμ£Όμ†ŒλŠ” λ‹€ 0x둜 μ‹œμž‘ν•˜λŠ”κ±ΈκΉŒ?

β€˜0xβ€™λŠ” 이 μˆ«μžκ°€ 16μ§„μˆ˜(hexadecimal)λΌλŠ” 것을 λ‚˜νƒ€λ‚΄λŠ” 접두어(prefix)μž…λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 숫자 ν‘œκΈ° 방식을 λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ νŠΉλ³„ν•œ 접두어λ₯Ό μ‚¬μš©ν•˜λŠ”λ°:

  • 16μ§„μˆ˜: 0x (예: 0x2AF)
  • 8μ§„μˆ˜: 0 (예: 0777)
  • 2μ§„μˆ˜: 0b (예: 0b1010)
  • 10μ§„μˆ˜: 접두어 μ—†μŒ

Fetch-Decode-Execute 사이클

사이클을 λŒλ•Œλ§ˆλ‹€ ν‘œκ°€ λ‹¬λΌμ§€λŠ” 것은 각 λ‹¨κ³„λ³„λ‘œ λ ˆμ§€μŠ€ν„°λ“€μ˜ μƒνƒœκ°€ λ³€ν™”ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

  1. Fetch (λͺ…λ Ήμ–΄ κ°€μ Έμ˜€κΈ°) 단계:
  • PC(Program Counter)의 μ£Όμ†Œκ°’μ— ν•΄λ‹Ήν•˜λŠ” λͺ…λ Ήμ–΄λ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ κ°€μ Έμ™€μ„œ IR(Instruction Register)에 μ €μž₯
  • PCλŠ” λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό 가리킀도둝 증가
  1. Decode (해석) 단계:
  • IR에 μ €μž₯된 λͺ…λ Ήμ–΄λ₯Ό λΆ„μ„ν•˜μ—¬ μˆ˜ν–‰ν•  λ™μž‘κ³Ό ν”Όμ—°μ‚°μžλ₯Ό νŒŒμ•…
  • λͺ…λ Ήμ–΄μ˜ μ’…λ₯˜μ— 따라 ν•„μš”ν•œ λ ˆμ§€μŠ€ν„°λ‚˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κ²°μ •
  1. Execute (μ‹€ν–‰) 단계:
  • ν•΄μ„λœ λͺ…λ Ήμ–΄λ₯Ό μ‹€μ œλ‘œ μˆ˜ν–‰
  • ALUλ₯Ό ν†΅ν•œ μ—°μ‚°μ΄λ‚˜ λ©”λͺ¨λ¦¬ μ ‘κ·Ό 등이 이루어짐
  • μ‹€ν–‰ κ²°κ³Όκ°€ λ ˆμ§€μŠ€ν„°λ‚˜ λ©”λͺ¨λ¦¬μ— μ €μž₯

각 λ‹¨κ³„λ§ˆλ‹€ λ‹¬λΌμ§€λŠ” ν‘œμ˜ λ‚΄μš©:

λ ˆμ§€μŠ€ν„°λ“€μ˜ κ°’ λ³€ν™”, λ²„μŠ€μ˜ μƒνƒœ, μ œμ–΄ μ‹ ν˜Έλ“€μ˜ μƒνƒœ, λ©”λͺ¨λ¦¬ μ ‘κ·Ό μƒνƒœ

μ΄λŸ¬ν•œ 변화듀이 ν‘œλ‘œ λ‚˜νƒ€λ‚˜κΈ° λ•Œλ¬Έμ— 각 λ‹¨κ³„λ³„λ‘œ ν‘œμ˜ λ‚΄μš©μ΄ λ‹¬λΌμ§€κ²Œ λ©λ‹ˆλ‹€. μ΄λŠ” 컴퓨터가 λͺ…λ Ήμ–΄λ₯Ό μ²˜λ¦¬ν•˜λŠ” 과정을 λ‹¨κ³„λ³„λ‘œ λ³΄μ—¬μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€.