기본적인 논리게이트는 알고 있다는 가정하에 간단하게 표만 보고 넘어가자.
- AND Gate - 둘 다 1이어야 1, 곱셈이라고 생각하면 편하다.
- OR Gate - 하나만 1이어도 1, 덧셈이라고 생각하면 편하다.
- NOT Gate - 0, 1 뒤집기
- NAND Gate(Not AND) - AND Gate 다음에 NOT Gate를 통과시킨 것이다.
- NOR Gate(Not OR) - OR Gate 다음에 NOT Gate를 통과시킨 것이다.
- XOR Gate(Exclusive OR) - 두 입력의 값이 같으면 0, 다르면 1이다.
- XNOR Gate(Exclusive NOR) - XOR Gate다음에 NOT Gate를 통과시킨 것이다.
- Buffer Gate - NOT 게이트와는 반대되는 개념으로 사용되는 논리회로이다. 입력하는 신호를 변경하지 않고 출력하는 회로로 출력시간 지연, 감쇄 신호를 회복하는 기능이 있다.
그리고 위 게이트를 적절히 조합하면 가산기를 만들 수 있다.
반가산기(half-adder, HA)
반가산기는 두 bit를 덧셈하는 가산기를 의미한다. 회로로 표현하면 왼쪽, 간단히 박스로 표현하면 오른쪽처럼 표현한다.
반가산기(Half Adder)는 1자리의 이진연산을 하는 것이기 때문에 올림(carry) 에 대한 처리는 따로 해줘야 한다.
이진수는 한자리에 0, 1로밖에 표현을 못하기 때문에 1+1을 할 경우, 다음 자리로 올려야 할 수가 생긴다.(carry)
그 다음자리를 기준으로 생각해보면 이전 자리에서 올림(carry)가 올라올 것까지 생각하여 총 3개의 이진수를 더해야하는데, 이것까지 포함해서 계산하는 것을 전가산기라고 한다.
전가산기(full-adder, FA)
전가산기는 반가산기를 2개 연결하면 된다. Carry In에 대한 처리까지 함께 해주는 것이다.
즉, 전가산기 하나로 1비트 덧셈이 가능하다는 얘기다. 이 전가산기를 여러개 이어붙이면 8bit adder, 16bit adder가 되는 것이다.
흔히 말하는 윈도우가 32비트, 64비트라는 것은 데이터를 표현하는, 전달하는, 처리하는 단위가 32, 64비트라는 뜻이다. 2^32, 2^64의 숫자를 처리할 수 있다는 뜻이다.
클럭(clock)
클럭(clock)이란 CPU의 속도를 나타내는 단위이다. 클럭은 1초 동안 파장이 한 번 움직이는 시간을 의미하는데, 이 시간 동안 처리하는 데이터 양에 따라 CPU의 속도가 달라지게 된다.
컴퓨터가 어떤 작은 시점마다 컴퓨터가 탁탁 동작하게 되어있는데 이걸 클럭이라고 부른다.
예를 들어, CPU가 2.5기가헤르츠라는 것은 1초에 2,500,000,000(25억)번의 클럭이 실행된다는 뜻이다. 즉 1초에 25억번의 명령이 처리된다는 것을 의미한다. 이 단위가 클럭이다.
클럭은 0과 1로 왔다갔다하는 시간이 일정하고, 이를 one cycle이라고 한다. 하나의 싸이클, 주기라고 한다.
만약에 한 싸이클이 걸리는 시간이 0.05초면 1초에 20싸이클이 필요한거다. 이걸 20hz로 표현한다. 그래서 frequency는 주기라고 보면 된다.
한 클럭당 하나의 명령, 연산을 수행한다고 생각하면 된다.
Oscillator
발진자 또는 발진기라고 불리는 소자는 전자회로에서 반복 적인 또는 주기적인 신호를 생성하는 소자로 클럭을 발생시킨다거나 전파를 발생시키는 등의 기능을 하는 소자이다. 소신호로 주파수를 발생하는 단일 또는 복합 소자도 있고 회로를 구성해서 특정 신호를 만드는 방법도 있다.
이런 Oscillator를 통해 컴퓨터 전체, 또는 CPU 전체에서 일정하게 명령을 실행할 수 있도록 전원을 줬다가 말았다를 할 수 있다.
** 데스크탑을 사보면 CPU 속도를 빠르게 하는 작업을 보통 오버클럭이라고 한다. 이 오버클럭은 2.5GHz로 클럭이 동작하는데 이 주기를 더 높인 것이다. 4GHz로 하도록 한다던가. 이렇게 하면 0과 1로 왔다갔다하는 시간이 더 짧아지면서 전기, 부하가 많이 생겨서 열이 많이 나서 오버클럭을 보통 할 때는 열을 식혀주는 그런 장비를 붙여서 하는 경우가 많다.