CSAPP 4.2 Logic design ant the Hardware Contrlop Language HCL

πŸ“ 상세 정리

  • 4.2.0
    • ν•˜λ“œμ›¨μ–΄ μƒμ—μ„œ μ „μž νšŒλ‘œλŠ” λΉ„νŠΈλ“€ μƒμ˜ ν•¨μˆ˜λ₯Ό κ³„μ‚°ν•˜κ³  / μƒμ΄ν•œ μ’…λ₯˜μ˜ λ©”λͺ¨λ¦¬ μš”μ†Œλ“€μ— λΉ„νŠΈλ“€μ„ μ €μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.
      • 논리값 1은 1볼트 λ‚΄μ™Έμ˜ κ³ μ „μ••, 0은 0볼트 λ‚΄μ™Έμ˜ μ €μ „μ••μœΌλ‘œ ν‘œν˜„ν•œλ‹€.
    • λ””μ§€ν„Έ μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 μ„Έκ°€μ§€ μ£Όμš” ꡬ성 μš”μ†Œκ°€ ν•„μš”ν•˜λ‹€.
      • λΉ„νŠΈμ— λŒ€ν•œ ν•¨μˆ˜λ₯Ό κ³„μ‚°ν•˜κΈ° μœ„ν•œ μ‘°ν•© 둜직
      • λΉ„νŠΈλ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ μš”μ†Œ
      • λ©”λͺ¨λ¦¬ μš”μ†Œμ˜ μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•œ 클둝 μ‹ ν˜Έ
  • 4.2.1 Logic Gates
    • 논리 κ²Œμ΄νŠΈλŠ” λ””μ§€ν„Έ 회둜의 κΈ°λ³Έ μ»΄ν“¨νŒ… μš”μ†Œμ΄λ‹€.
      • bool값에 λŒ€ν•œ and, or, not μ—°μ‚°
    • && & / || | 차이
      • && || λŠ” λ…Όλ¦¬μ—°μ‚°μž -> κ²°κ³ΌλŠ” 0 or 1
      • & |λŠ” λΉ„νŠΈμ—°μ‚°μž -> κ²°κ³ΌλŠ” 각 λΉ„νŠΈμ— λŒ€ν•΄ μˆ˜ν–‰ν•œ κ°’
    • λ…Όλ¦¬κ²Œμ΄νŠΈλŠ” 항상 ν™œμ„±ν™” λ˜μ–΄μžˆλ‹€.
      • μž…λ ₯값이 λ³€κ²½λ˜λ©΄ μž μ‹œν›„μ— 그에따라 좜λ ₯이 μˆ˜μ •λ  것
  • 4.2.2 Combinational circuits and HCL Boolean Ecpressions
    • λ‹€μˆ˜μ˜ 논리 게이트λ₯Ό λ„€νŠΈμ›Œν¬λ‘œ μ‘°λ¦½ν•˜λ©΄μ„œ μš°λ¦¬λŠ” μ‘°ν•© 회둜둜 μ•Œλ €μ§„ 계산 블둝을 ꡬ성할 수 μžˆλ‹€.
    • μ΄λ•Œ λͺ‡κ°€μ§€ μ œν•œμ΄ μžˆλŠ”λ°
      • λͺ¨λ“  논리 게이트의 μž…λ ₯은 λ‹€μŒ 세가지쀑 μ •ν™•νžˆ ν•˜λ‚˜μ— μ—°κ²°λ˜μ–΄μ•Ό ν•œλ‹€.
        • μ‹œμŠ€ν…œ μž…λ ₯(1μ°¨ μž…λ ₯)
        • 일뢀 λ©”λͺ¨λ¦¬μš”μ†Œμ˜ 좜λ ₯
        • 일뢀 λ…Όλ¦¬κ²Œμ΄νŠΈμ˜ 좜λ ₯
      • λ‘˜ μ΄μƒμ˜ 논리 게이트의 좜λ ₯은 ν•¨κ»˜ 연결될 수 μ—†λ‹€.
        • (?wire λ₯Ό μƒμ΄ν•œ 전압을 ν–₯ν•΄ κ΅¬λ™μ‹œμΌœμ„œ 회둜 μ˜€λ™μž‘μ„ μ•ΌκΈ°ν•  수 μžˆλ‹€.)
          • μ•„ν•˜, 이게 λ¬΄μŠ¨μ†Œλ¦°κ°€ ν–ˆλŠ”λ° 두 좜λ ₯λΆ€λ₯Ό μ—°κ²°ν•˜λ©΄ ν•˜λ‚˜κ°€ 1, ν•˜λ‚˜κ°€ 0μ΄μ—ˆλ‹€λ©΄ μ—°κ²°λ λ•Œ μ’€ κ³€λž€ν•΄μ§„λ‹€! 전원과 μ ‘μ§€κ°€ λ§Œλ‚˜λŠ”κ²ƒλ„ 이슈고.
      • λ„€νŠΈμ›Œν¬λŠ” λΉ„μˆœν™˜μ μ΄μ–΄μ•Ό ν•œλ‹€.
        • λ£¨ν”„λŠ” λ„€νŠΈμ›Œν¬μ— μ˜ν•΄ κ³„μ‚°λœ ν•¨μˆ˜μ— λͺ¨ν˜Έμ„±μ„ μ•ΌκΈ°ν•  수 μžˆλ‹€.
  • 4.2.3 Word-Level Combinational Circuits and HCL Integer Expressions
    • 큰 논리 게이트 λ„€νŠΈμ›Œν¬λ₯Ό μ‘°λ¦½ν•¨μœΌλ‘œμ¨ μš°λ¦¬λŠ” 훨씬 더 λ³΅μž‘ν•œ ν•¨μˆ˜λ₯Ό 계산할 수 μžˆλ‹€.
      • word λ‹¨μœ„λ‘œ μ—°μ‚°ν•΄μ•Όμ§€!
      • μ •μˆ˜, μ£Όμ†Œ, instuction μ½”λ“œ, λ ˆμ§€μŠ€ν„° μ‹λ³„μž λ“± 4~64λΉ„νŠΈ λ²”μœ„μ˜ μˆ˜λ§Žμ€ wordκ°€ μžˆμ„ 것
    • μ•žμœΌλ‘œ 그림으둜 λ‚˜νƒ€λ‚Όλ•Œ 점선은 λΉ„νŠΈλ‹¨μœ„, 쀑간크기 싀선은 wordλ‹¨μœ„
  • 4.2.4 Set MemberShip
    • HCLμ—μ„œ or연산이 λΆ™μ–΄μžˆλŠ” μ½”λ“œλŠ” in λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
  • 4.2.5 Memory and Clocking
    • μ‘°ν•©νšŒλ‘œλŠ” 본질적으둜 μ–΄λ–€ 정보도 μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • ν•˜μ§€λ§Œ μˆœμ°¨νšŒλ‘œκ°€ ν•„μš”ν•΄μ§€λ©΄, μš°λ¦¬λŠ” λΉ„νŠΈλ‘œ ν‘œν˜„λ˜λŠ” 정보λ₯Ό μ €μž₯ν•˜λŠ” μž₯치λ₯Ό λ„μž…ν•΄μ•Ό ν•œλ‹€.
      • μ΄λŠ” μƒˆλ‘œμš΄ 값이 μž₯μΉ˜μ— λ‘œλ“œλ  λ•Œλ₯Ό κ²°μ •ν•˜λŠ” 주기적인 μ‹ ν˜ΈμΈ 단일 ν΄λŸ­μ— μ˜ν•΄ μ œμ–΄λœλ‹€.
      • 클둝 λ ˆμ§€μŠ€ν„°λŠ” κ°œλ³„ λΉ„νŠΈ / μ›Œλ“œλ₯Ό μ €μž₯함
      • 랜덀 μ•‘μ„ΈμŠ€ λ©”λͺ¨λ¦¬λŠ” μ£Όμ†Œλ₯Ό μ‚¬μš©ν•΄μ„œ μ½κ±°λ‚˜ μ“Έ 단어λ₯Ό μ„ νƒν•˜λ©΄μ„œ μ—¬λŸ¬ μ›Œλ“œλ₯Ό μ €μž₯함
        • λŒ€ν‘œμ μœΌλ‘œ 가상 λ©”λͺ¨λ¦¬ μ‹œμŠ€ν…œ, λ ˆμ§€μŠ€ν„° 파일 λ“±
      • μ•„λ¬΄νŠΌ 이 두가지 λ ˆμ§€μŠ€ν„°λ₯Ό 각각 ν•˜λ“œμ›¨μ–΄ λ ˆμ§€μŠ€ν„° / ν”„λ‘œκ·Έλž¨ λ ˆμ§€μŠ€ν„°λΌκ³  ν•˜μž.
    • λ ˆμ§€μŠ€ν„° νŒŒμΌμ€ λ‚΄λΆ€ μ €μž₯μž₯치λ₯Ό 갖기에 μ‘°ν•©νšŒλ‘œκ°€ μ•„λ‹ˆλ‹€.
    • μ•„ν•˜, 이게 μ’…ν•©μ μœΌλ‘œ λ¬΄μŠ¨λ§μΈμ§€ 천천히 μ½μœΌλ©΄μ„œ μ΄ν•΄ν•΄λ³΄μž.
      • κ²°κ΅­ 값을 μ €μž₯ν•  일은 λΆ„λͺ…νžˆ 생긴닀. 전에 κ³„μ‚°ν•œ κ²°κ³Όλ₯Ό ν™œμš©ν•˜λ˜κ°€ ν•΄μ•Όν•  수 μžˆμœΌλ‹ˆκΉŒ.
      • 잘 μ•Œλ“―μ΄ κ·Έκ±Έ μ €μž₯ν•˜λŠ” 뢀뢄은 CPU의 λ ˆμ§€μŠ€ν„°λ‹€. CPU에 λ‹¬λ €μžˆλŠ” κ·Έ 친ꡬλ₯Ό ν•˜λ“œμ›¨μ–΄ λ ˆμ§€μŠ€ν„°λΌκ³  λΆ€λ₯΄μž.
      • 그러면 μ €μž₯을 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•˜λŠ”κ°€? CPUμ—μ„œλŠ” μ•ˆμ—μ„œ D-ν”Œλ¦½ν”Œλžμ΄λΌλŠ”κ±Έ μ΄μš©ν•΄μ„œ, μ•ˆμ— μ „λ₯˜λ₯Ό κ°€λ‘λŠ” 방식을 μ‚¬μš©ν•œλ‹€.
        • κ°€λ‘λŠ” 타이밍은 클둝 μ‹ ν˜Έ (0-1 μ§„λ™μ‹ ν˜Έ)κ°€ μΌœμ§€λŠ” κ·Έ 타이밍이닀.
      • X86-64μ—λŠ” 총 16개의 λ ˆμ§€μŠ€ν„°κ°€ μžˆμœΌλ‹ˆκΉŒ, ν•˜λ“œμ›¨μ–΄ λ ˆμ§€μŠ€ν„°λŠ” 총 16κ°œκ°€ ν•„μš”ν•˜λ‹€. 그리고 이것듀에 λŒ€ν•œ λ¬ΆμŒμ„ λ ˆμ§€μŠ€ν„° 파일이라고 ν•œλ‹€.
        • μ™œ λ¬Άμ–΄μ„œ λ³΄κ΄€ν•˜λŠ”κ°€? 그건 16κ°œμ— λŒ€ν•΄ λͺ¨λ“  ALU에 λ‹€λŠ”κ²Œ 에바기 λ•Œλ¬Έμ΄λ‹€. μœ„μ— MUX, μ„ νƒκΈ°λ§ˆλƒ₯ 이 λ ˆμ§€μŠ€ν„°μ—μ„œλ„ λΉ„νŠΈλ§ˆμŠ€ν‚Ή 결과처럼 μ—°μ‚°ν•΄μ„œ 값을 μ–»μ–΄λ‚΄λŠ”κ²Œ 회둜둜 κ΅¬ν˜„ν•˜κΈ° 훨씬 더 쉽닀.
      • λ”°λΌμ„œ κ·Έ λ³΄λ“œ μœ„μ˜ λ ˆμ§€μŠ€ν„°λ₯Ό ν•˜λ“œμ›¨μ–΄ λ ˆμ§€μŠ€ν„°, 그리고 μš°λ¦¬κ°€ μ“°λŠ” %rax같은걸 ν”„λ‘œκ·Έλž¨ λ ˆμ§€μŠ€ν„°λΌκ³  ν•œλ‹€.

β”μ§ˆλ¬Έ 사항

❓ λ£¨ν”„λŠ” λ„€νŠΈμ›Œν¬μ— μ˜ν•΄ κ³„μ‚°λœ ν•¨μˆ˜μ— λͺ¨ν˜Έμ„±μ„ μ•ΌκΈ°ν•  수 μžˆλ‹€. μ™œ?

AND / OR 같은 νšŒλ‘œλ“€λ‘œ 루프λ₯Ό λ§Œλ“€λ©΄ 전압이 μ§„λ™ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ μ€‘κ°„μ—μ„œ λ©ˆμΆ°λ²„λ¦°λ‹€!

πŸ”— μ°Έκ³  자료