View

300x250

이 글은 insight 출판사의 [밑바닥부터 만드는 컴퓨팅 시스템 / The Elements of Computing System]이라는 책에 있는 프로젝트(과제) 를 수행하는 글입니다. 

해외에서는 nand2tetris라는 이름의 프로젝트로 알려져 있습니다! 동일한 내용으로 구성되어 있으니, nand2tetris를 공부할 때 참고바랍니다.

 

Chapter 1의 프로젝트 보러가기


 

현재 군대내에 있어서 촬영이나 스캔이 힘든 관계로 ㅜㅜ 회로설계나 그림은 추후 업로드 하겠씀당. 앞쪽이 유난히 게이트가 많아서 그림이 많이 필요하네용

Boolean Logic

아래의 순서로 공부하면서 불 논리에 대해 알아보자.
Bool 대수 → Bool 함수 → Bool 게이트 → 칩과 게이트 → 실제 HW 설계

 

배경

불 대수 - Boolean Algebra

불 대수란 다음과 같다.

0,1 또는 True, False로 구성된 값을 다루는 대수학.

 

컴퓨터는 2진수를 다루는 기계인만큼, Bool 대수는 HW 설계에 가장 중심이 되는 기본이 된다.

 

불 함수 - Boolean Function

2진수의 Input 값에서 2진수의 Output을 얻을 수 있는 함수.
컴퓨터 HW의 핵심 역할을 한다.

 

진리표 표현 - Truth Table

입력값과 결과값을 나란히 표기한다.
모든 입력값(2진 조합)을 나타내는 앞 열과 그에 대한 함수값인 뒷 열로 나타낸다.

불 표현 - Boolean Expression

가장 기본이 되는 연산 3가지

  • X And Y → X · Y
  • X Or Y → X + Y
  • Not X → x̄

 

정준표현 Canonial Representation
진리표의 각 행 중 결과가 1인 값들을 And 연산으로 묶고 Or로 나열한 방식
모든 불 함수는 불 표현으로 전환이 가능하다!

 

2입력 불 함수

n개의 2진변수를 통해 2 의 2^n^ 제곱 개의 불 함수가 정의된다. 이에 대해 2개의 2진 변수에 대한 불함수를 2입력 불 함수라고 말한다.
Nand 함수로 나머지 연산을 모두 만들 수 있다. 따라서 모든 불 연산은 HW적으로 설계가 가능하다.

아래는 2입력 불함수의 목록이다.

게이트 논리

게이트는 n개의 input과 m개의 output을 가지는 불 함수를 구현한 연산장치를 말한다. 전기적인 작용으로 스위치를 구성하여 불 대수로 추상화가 가능하다. 기본적인 게이트들로부터 더욱 복잡한 게이트를 만들어낸다.

한 게이트에 대한 인터페이스는 한가지 이지만, 게이트에 대한 구현은 여러 방법이 있다. 그 중 최소비용 최대효과의 구현방법을 선택한다.

 


HDL : Hardware Description Language 하드웨어 기술 언어

칩(게이트)를 HDL에서 구성 → 테스트 ( Bool 값이 맞는가? 속도, 전력소비 등을 최적화 ) → 생산

 

하드웨어 시뮬레이션

HDL → 컴퓨터가 검사 가능하게 표현식을 번역 및 테스트 → 결과 출력


명세

NAND 게이트

다른 게이트의 기본이 되는 게이트. 나머지 불 연산을 모두 표현할 수 있다.

 

기본 논리게이트

  • not : converter. 0을 1로, 1을 0으로 변환
  • and : 입력값이 둘 다 1일 때 1을, 나머지는 0을 반환
  • or : 입력값중 하나라도 1이면 1을, 아니면 0을 반환
  • xor : 두 입력값이 다르면 1을, 같으면 0을 반환
  • 멀티플렉서(multiplexor - MUX) : 여러 입력값 중 선택된 입력값을 반환
  • 디멀티플렉서(demultiplexor -DMUX) : 입력신호를 선택된 하나의 출력선으로 반환

 

멀티비트

64비트 컴퓨터 -> 64자리 논리계산을 동시에 수행해야한다 -> 멀티비트 연산을 수행
각각의 비트에 대해서 연산을 진행
표현을 위해 주로 [64]인 배열을 사용한다.

  • and : A[64]•B[64] = Out[A[i]•B[i] for i in 0~63]
  • or : 상동
  • not : 상동
  • MUX : A 또는 B를 select value에 따라 반환

 

다입력

기본 논리게이트보다 입력의 수가 많아진 경우

  • 다입력 or : ABCD N개의 입력 중 하나라도 1 이면 out = 1
  • 다입력 MUX, DMUX : 3개 이상의 입력 중 select의 값에 따라 선택

구현

Nand게이트 만으로 2입력을 구현해보자

멀티비트 입력, 다입력 게이트의 경우에도 같은 방식으로 만들어줄 수 있다.

 

정리

Nand 게이트를 이용해 게이트를 구성할 수 있다. 그러나, 게이트의 수 또는 회로의 교차 등의 이슈도 판단해야한다. (물리학의 영역)

 


Chapter 1의 프로젝트 글 보러가기

320x100
Share Link
reply
반응형
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31