View
이 글은 insight 출판사의 [밑바닥부터 만드는 컴퓨팅 시스템 / The Elements of Computing System]이라는 책에 있는 프로젝트(과제) 를 수행하는 글입니다.
해외에서는 nand2tetris라는 이름의 프로젝트로 알려져 있습니다! 동일한 내용으로 구성되어 있으니, nand2tetris를 공부할 때 참고바랍니다.
현재 군대내에 있어서 촬영이나 스캔이 힘든 관계로 ㅜㅜ 회로설계나 그림은 추후 업로드 하겠씀당. 앞쪽이 유난히 게이트가 많아서 그림이 많이 필요하네용
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 게이트를 이용해 게이트를 구성할 수 있다. 그러나, 게이트의 수 또는 회로의 교차 등의 이슈도 판단해야한다. (물리학의 영역)
'학부생 CS > Elements of Comp-Sys' 카테고리의 다른 글
5. Computer Architecture - [밑바닥부터 만드는 컴퓨팅 시스템] (0) | 2019.11.24 |
---|---|
4. Machine Language - [밑바닥부터 만드는 컴퓨팅 시스템] (0) | 2019.11.23 |
3. Sequential Logic - [밑바닥부터 만드는 컴퓨팅 시스템] (0) | 2019.11.23 |
2. Boolean Arithmetic - [밑바닥부터 만드는 컴퓨팅 시스템] (0) | 2019.11.23 |
0. 새로운 공부 - [밑바닥부터 만드는 컴퓨팅 시스템] (0) | 2019.11.19 |