RAM
1 비트를 저장하는 메모리 (1 Bit Register)
지난번에 ALU 배우면서 배웠던 로직 게이트들을
활용해 , 1 비트를 저장하는 메모리를 만들 수 있다.
OR 게이트를 응용
OR 로직 게이트에서 , 로직 게이트 이후의 아웃풋을
병렬적으로 다시 하나의 인풋 선에 연결하면 ,
정상 인풋을 A , 아웃풋과 연결된 인풋을 B 라 하면
일단 A 가 1 이 되면, 아웃풋도 1이 되며 ,
이는 다시 B 를 1로 만든다. 그리고 다시 A 가 0 으로 되더라도
아웃풋은 다시는 0 이 되지 않는다.
AND 게이트를 응용
AND 로직 게이트에서 , 로직 게이트 이후의 아웃풋을
병렬적으로 다시 하나의 인풋 선에 연결하면 ,
정상 인풋을 A , 아웃풋과 연결된 인풋을 B 라 하면
일단 A, B 가 1 이 되면, 아웃풋도 1이 되며 ,
그리고 다시 A 가 0 으로 된다면,
아웃풋과 B 는 0 가 된다.
AND - OR Latch
위에 있는 두개의 회로를 합친 형태로
SET 과 RESET 인풋을 가진다.
SET 은 OR 게이트를 거쳐서 AND 게이트를 통해 아웃풋과
다시 아까 지난 OR 게이트로 향하는 다른 인풋으로 연결되어있고 .
RESET은 NOT 게이트를 거쳐서 AND 게이트의 다른 인풋을 거쳐
아웃풋과 위 OR 게이트가 지나는 것 처럼 OR 게이트의 한 인풋으로 연결되어있다.
( 설명이 복잡한데. 한번 그려보면 이해 갈 것 )
이렇게 구성된 회로를 통해서 . RESET 인풋으로 1이 들어가지 않는 한은
SET 으로 입력한 1 bit 데이터를 기록할 수 있게 된다 !
RESET 인풋에 1이 들어가게 되면 , 이 OUTPUT 은 0 인 상태가 된다.
( 이부분 좀 이상해서 계속 수정중. Gated Latch 와 분명 다를텐데.. 하고 고쳤다. 처음엔 아랫 부분과 헷갈림 #2019_03_5)
Gated LATCH
위에 AND - OR Latch 를 좀 더 구성요소를 늘려 복잡하게 추가하면
Gated Latch 를 만들 수 있다. ( AND-OR Latch 앞부분에 회로 추가 )
DATA IN 과 WRITE ENABLE 인풋 두개를 가지고 있다.
WRITE ENABLE 인풋이 1 이라면 DATA IN 의 값을 Gated Latch 내에 저장하고
WRITE ENABLE 인풋이 0 이라면 DATA IN 의 값으로 Gated Latch 의 저장된 값을 바꿀 수 없다.
8 bit….. 64 bit
그래서 저런 레지스터를 여러개 한줄로 이어붙여서 8 bit 레지스터
같은 것을 만들거나.
아예 매트릭스 형태의 그리드를 이용해
( AND 게이트를 이용해 해당 칼럼 - 로우의 인풋이 1일때만 데이터를 내뱉도록 하는 식 )
좀 더 큰 용량의 레지스터를 만들 수 있다.
( 여기서 레지스터와 램의 차이에 대해서 혼란이 오기 시작했는데, 사용 용도가 다르다고 보는 것이 설명이 있는데 후에 보강하자. #2019_03_5)
후기
지난번에 컴퓨터의 연산에 대해서 살펴보았다면
이번에는 저장장치에 대해서 공부했다.
역시나 이번에도 놀라움의 연속
로직 게이트를 이런 식으로도 활용할 수 있구나.
역시나 컴포넌트와 모듈화를 통해서 순식간에
복잡하고 정교하게 무언가를 기록할 수 있는 장치를 뚝딱 만들어내는
신비한 학문이란 생각이 든다.
인간의 데이터는 뉴런을 통해서 저장되는데
이 뉴런도 자세히보면 로직 게이트랑 별반 차이 없다.
다만 좀더 아날로그와 화학 기반이라고 하면 맞겠다.
( 일정 신호 이상이라면 발화하고 다음 뉴런으로 신호를 넘기는 식 )