ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [밑바닥부터 만드는 컴퓨팅 시스템 2판] 스터디 - 1, 2장
    Study/밑바닥부터 만드는 컴퓨팅 시스템 2판 2025. 3. 2. 23:51

    1장: 논리 게이트와 조합 논리 회로

    기초적인 논리 게이트인 Nand를 활용하여 Not, And, Or, Xor 게이트, 멀티플렉서(Mux), 디멀티플렉서(DMux)를 구성한다.
    Not, And, Or, Xor은 기본적인 논리 연산자를 구현하고, Mux와 DMux는 데이터 흐름을 제어한다.

    1. 새롭게 알게 된 내용

    게이트별 논리

    • Nand (Not-And): 부정 논리곱
      • if ((a == 1) and (b == 1)) then out = 0, else out = 1
    • And: 논리곱
      • if ((a == 1) and (b == 1)) then out = 1, else out = 0
    • Or: 논리합
      • if ((a != 1) and (b != 1)) then out = 0, else out = 1
    • Not (Inverter): 논리부정
      • if (in == 0) then out = 1, else out = 0
    • Xor (Exclusive-Or): 배타적 논리합
      • if (a != b) then out = 1, else out = 0
    • Mux (Multiplexor): 선택 게이트
      • if (sel == 0) then out = a, else out = b
    • DMux (Demultiplexor): 분배 게이트
      • if (sel == 0) then {a, b} = {in, 0}, else {a, b} = {0, in}

    핵심 개념

    • 모든 불 함수는 Nand 게이트만으로 구현 가능
      • 드모르간의 법칙에 의해 Or을 Not과 And로 표현할 수 있기 때문에 Nand만으로 모든 불 함수를 구성할 수 있다.
    • 불 함수의 진리표가 주어지면, 해당 불 함수를 구현하는 불 표현식을 합성할 수 있다.
    • 하드웨어 최적화의 첫걸음은 '불 표현식 단순화' → 이는 NP-난해 문제이다.
    • HDL (Hardware Development Language)
      • 하드웨어 칩 설계를 위해 사용되는 언어
      • 내부 핀은 HDL 코드에서 처음 등장할 때 자동으로 생성됨
      • 핀의 출력선 개수에 제한이 없음
    • 불 함수 vs 불 표현식 vs 불 대수 vs 접두어 표기법
      • 불 함수: 함수 형태로 논리 연산을 수행하는 모듈 (e.g. And(a, b, c))
      • 불 표현식: 사람이 읽기 쉬운 논리식 (e.g. a And b And c)
      • 불 대수: 대수적 성질 강조 (e.g. a ⋅ b ⋅ c = (a ⋅ b) ⋅ c)
      • 접두어 표기법: 폴란드 표기법 (e.g. And(And(a, b), c))
    • 컴퓨터 하드웨어는 멀티비트 데이터를 처리하도록 설계됨
      • 예: 16비트 게이트의 논리 구조는 32비트, 64비트와 동일함.
      • 비트는 오른쪽에서 왼쪽으로 인덱싱됨 (e.g. 16비트 데이터에서 0번째 비트는 맨 오른쪽, 15번째 비트는 맨 왼쪽)

    2. 어려웠던 점 및 궁금한 점

    • Nand는 Not-And이고 Or이 빠져있는데, 어떻게 모든 불 함수를 구현할 수 있을까?
      • 드모르간의 법칙에 따라 Or은 Not과 And로 표현할 수 있기 때문.
      • Not(x And y) = Not(x) Or Not(y)
      • Not(x Or y) = Not(x) And Not(y)
    • Not(Nand(x, y))를 Nand로만 표현할 수 있을까?
      • Not(x) = Nand(x, x)
      • Not(Nand(x, y)) = Nand(Nand(x, y), Nand(x, y))
    • 불 함수는 진리표만 보고 어떻게 표현식을 만들 수 있을까?
      • 논리합 정규형(DNF, Disjunctive Normal Form)
      • 불 함수가 1인 행의 miniterm들을 Or로 연결하면 해당 불 함수를 합성할 수 있음.

    3. 추가 내용

    • Miniterm: 특정 행에서만 1이 되는 식 (변수가 0이면 Not(x), 1이면 x로 놓고 논리곱(And)으로 표현)
    • 15개 게이트 구현 실습
      • Not, And, Or, Xor, Mux, DMux 등 기본 게이트부터 멀티비트 버전까지 구현.

     


    2장: 산술 논리 연산 장치(ALU)

    숫자 표현 및 산술 연산을 수행하는 반가산기, 전가산기, n비트 가산기, 증분기를 조합하여 ALU를 구성한다.

    1. 새롭게 알게 된 내용

    • 반가산기 (Half Adder): 두 개의 1비트 입력에 대해 sum과 carry 계산
    • 전가산기 (Full Adder): 반가산기의 한계를 보완하여 carry-in을 고려함.
    • n비트 가산기: 여러 개의 전가산기를 직렬로 연결하여 멀티비트 연산 수행
    • 증분기 (Incrementer): 입력된 숫자에 +1을 하는 회로 (명령어 주소 증가에 사용)
    • ALU는 조합 논리 회로와 순차 논리 회로로 구성됨.
    • 2의 보수법 (Two's Complement): 부호 있는 정수를 표현하는 효율적인 방법
      • -x = 2^n - x
      • 덧셈과 뺄셈이 동일한 방식으로 처리됨.

    2. 흥미로웠던 점

    • 2진수의 음수 표현
      • 최상위 비트(MSB)가 부호를 결정
      • 모든 산술 연산은 2진수 덧셈으로 환원 가능
    • ALU 제어비트 설정에 따라 다양한 연산 수행 가능
      • x - 1을 수행하려면 제어비트를 001110으로 설정
    •  

    3. 인상 깊었던 구절

    • "하드웨어 산업에서 단순하고 우아한 설계는 늘 성공한다."

     

     

    댓글

Designed by Tistory.