'흐름제어부'에 해당하는 글 1건





챕터 15. 바이트와 16진수

2, 8, 16 진수들은 서로 변환해서 사용하기 쉽고, 10진수는 어렵지 않게 사용할 수 있다는 얘기. 이는 위치에 기반한 숫자체계 덕분이다.
( 옮긴이 ) 디지털 회로에서 데이터가 흘러가는 경로를 위주로 설명한 것을 데이터 패스라 하며, 데이터 패스를 통하여 흘러가는 데이터의 흐름을 제어해 주는 부분을 흐름 제어부 ( control flow ) 라 합니다. 보통의 디지털 회로는 데이터 패스와 흐름 제어부가 합쳐져서 이루어집니다.
- 283쪽 발췌

초기에 8비트로 데이타 입출력의 크기가 정해진 건 특별한 의미가 있어서 그런 건 아니고, 단지 유용해서 였다고 한다. 대부분의 나라 언어를 표현하는데 8비트 정도면 적당했기 때문이었는데, 그 바람에 우리나라, 중국, 일본의 언어는 애좀 먹었다는 얘기를 하고 있다.


바이트 ( byte ) 라는 단어는 대략 1956년경에 IBM 에서 만들어졌습니다. 이 단어는 작은 부분을 의미하는 bite 라는 단어에서 유래했지만, bit 와의 혼동을 피하기 위하여 ' i ' 를 ' y ' 로 바꾸어 byte 로 표기하게 된 것이지요. 처음 잠깐 동안은 바이트가 특정 데이터 패스의 비트수를 표현하기 위하여 사용되었지만, 1960년대 중반쯤에 IBM system/360 이라는 중형 컴퓨터 시스템의 개발과정에서 8비트를 묶어서 부르는 이름으로 굳어지게 되었습니다.
...
바이트의 절반인 4비트는 종종 니블 ( nibble 또는 nybble ) 이라는 이름으로 불리는데, ( 통신 분야에서는 가끔 사용되지만 ) 바이트에 비하면 일반적으로는 거의 사용되지 않습니다.

- 284 쪽 발췌.

CODE(코드)하드웨어와소프트웨어에숨어있는언어
카테고리 컴퓨터/IT > 컴퓨터공학
지은이 찰스 펫졸드 (인사이트, 2010년)
상세보기



챕터 16. 메모리를 만들어 봅시다.

그동안 알려줬던 - 배웠다고 하기에는 이해도가 떨어져서.. ㅋㅋㅋ - 논리 회로들을 조합해서 RAM ( Random Access Memory ) 의 기초적인 형태를 구성할 수 있다는 걸 보여준다.

(옮긴이) 이러한 모호성을 줄이기 위해서, 최근에는 kilobyte 대신에 kibibyte 라는 단위를 사용하여 1024 바이트라는 것을 명확히 하려는 시도가 진행 중입니다. 약자로도 KB 가 아닌 KiB 로 적습니다. 마찬가지로 Megabyte 대신에 Mebibyte ( 약자로는 MiB ) 와 같은 단위를 사용하지요. 이는 현재 IEC 국제 표준이기도 하며, Linux 시스템 등에서 폭넓게 받아들여지고 있습니다.
- 315쪽 발췌.

예제로 만든 램의 크기를 계산하는 방법에 대해 설명도 곁들인다. 끝으로 책에 등장하는 램은 전기가 꺼지면 데이타가 사라지는 휘발성 메모리 ( volatile memory ) 라는 걸 당부한다.



챕터 17. 혼자서 움직이는 컴퓨터

이제 그동안의 내용을 모아 컴퓨터 라는 것이 어떻게 구성되고, 그 안에서 회로들이 어떻게 동작하며, 제어신호, 주소체계에 따라 데이타들이 이동하고 연산되는 과정을 설명한다.

이러한 형태의 래치는 엣지 트리거 속성을 가지고 있다고 가정하도록 하겠습니다.
지금까지 더해진 숫자들의 중간 합을 보존하고 있는 래치를 보통 누산기 ( Accumulator ) 라 부릅니다. 이 장의 뒤에서 살펴보겠지만, 누산기를 단순히 덧셈을 누적하는 것 이상의 역할을 하게 됩니다. 누산기는 보통 일련의 수를 더하거나 뺄 때 첫 번째 값을 저장하고 있는 래치를 의미합니다.
- 325쪽 발췌.

이 챕터에서 중요한 건 역시 회로들이 신호에 따라 동작하는 방법과 순서인데, 머리로만 따라가는 게 쉽진 않다. ^^;; 대강 설명을 보자면 역시 각 클럭에 따른 타이밍이 중요하다는 걸 기억해야 할 듯 싶다. 최근의 3기가 헤르쯔 이상으로 동작하는 CPU 가 메인보드, 램 등등의 속도가 느린 부품들과 클럭속도를 맞춰가면 동작하는 이유같은 것들이라고나 할까?

이제 어떻게 동작하는지 알아봅시다. 처음 지우기 스위치를 열었을 때에는 RAM 배열에 대한 주소는 0000h 입니다. RAM 배열의 0000h 번지에 저장된 8 비트 데이터 값은 덧셈기의 입력이 됩니다. 덧셈기의 다른 입력은 00h 가 되는데, 이는 누산기가 0 으로 초기화되었기 때문이지요.

오실레이터 ( oscillator ) 에서는 0 과 1 사이를 매우 빠르게 천이 ( 遷移, transition ) 하는 신호인 클럭 신호를 제공해 줍니다. 지우기 스위치가 열린 이후에는 클럭이 0 에서 1 로 바뀔 때마다 다음 두 가지 일이 동시에 일어납니다. 덧셈기에서 출력되는 결과가 누산기에 저장되고, 동시에 16비트 카운트가 증가되어 RAM 배열에서 다음 값에 대하여 주소 지정이 일어나는 것이지요. 따라서 지우기 스위치가 열린 후 처음으로 클럭이 0 에서 1 로 변했다면, 래치에는 더하려는 첫번째 값이 저장될 것이고, 카운터는 0001h 로 증가할 것입니다. 다음 클럭이 변할 때는 래치에 첫 번째 값과 두 번째 값의 합이 저장될 것이고, 카운터의 값은 0002h 로 증가하게 됩니다.
...
물론, 제대로 동작하려면 몇 가지 가정이 있어야 합니다. 일단 오실레이터의 동작 속도는 그 이외의 회로의 동작 속도보다 느려야 합니다. 클럭이 한 번 움직일 때마다 덧셈기의 출력에서 제대로 된 덧셈의 결과가 만들어지기 위하여 수많은 릴레이의 값이 변해야 하는데, 모든 릴레이의 값이 변하기 전에 클럭이 다시 바뀌면 문제가 발생하겠지요.
- 327쪽 발췌.

어떻게든 연산할 때마다 주소별로 제어신호와 데이타들이 어떻게 이동하는지 감이라도 잡았다면 어셈블리어가 실행되는 걸 이해할 수 있다는 뜻이다. 프로그래밍 언어가 시작되는 지점이다. 어셈블리어는 기계어가 아니다. ^^;;

명령어 RAM 에 있는 각 명령어는 데이터 RAM 의 같은 주소에 있는 값이 누산기로 로드될 것인지, 더해질 것인지, 혹은 누산기의 값이 메모리로 저장될 것인지 등의 동작을 나타냅니다. 이러한 형태로 사용된 숫자 부호를 보통 명령어 부로, 또는 동작 부호, 혹은 아주 간단하게 동작코드 ( opcode ) 라 부릅니다. 이 숫자 코드들은 회로가 어떤 동작 ( operation ) 을 수행할 것인지 지시하는 ( instruct ) 역할을 합니다.
- 334쪽 발췌.

우리가 사용하는 컴퓨터는 불연속적인 숫자 ( discrete number. 이산수학 ) 를 다루고 있기 때문에 디지털 컴퓨터라고 부르는 것이다. 아날로그 컴퓨터라는 것도 존재했었다고 한다. ^^;;

(옮긴이) 실제로 자연계에 존재하는 정보는 대부분 아날로그 정보입니다. 이 정보는 값이 연속적이라 내포하고 있는 데이터가 매우 크다는 장점이 있지만, 다루기가 까다롭고 잡음에 약하다는 단점이 있었습니다. 이 연속적인 값을 일정 단계로 샘플링해서 불연속적인 데이터로 가공하여 사용하는 경우가 많지요. 이런 과정을 양자화 ( Quantization ) 라 하고, 양자화를 거친 데이터는 디지털 컴퓨터에서 처리가 가능해지는 것입니다. 물론, 디지털 데이터는 역양자화 ( Inverse Quantization ) 혹은 보간 ( interpolation ) 을 거쳐서 중간에 사라진 데이터를 적절히 채워 넣어서 아날로그 데이터로 다시 변환할 수 있습니다.
- 361쪽 발췌.



개인적으로는 지금까지의 17 챕터를 1부로 나누고, 이후의 챕터들을 2부로 나눴으면 더 좋지 않았을까 싶다. 컴퓨터에 대한 기초적인 개념들과 회로들, 동작들을 따라가다 보면 굳었던 머리도 풀어지고, 이해하기 어려운 부분이 많지 않아 약간은 쉬어가는 시간도 된다. 뒷부분은 목차들이나 내용을 대강 흝어보니 앞부분과는 확연히 다른 내용들을 다루고 있다. 노골적으로 말하자면 어려워 보이거나 잡다한 얘기들이 엿보인다는 것이다. ㅋㅋㅋ

지금까지의 소득은 역시 회로와 컴퓨터 사이의 연관성에 대해 이해도가 높아졌다는 점이다. 컴퓨터 구조나 회로를 설명하는 다른 책들에서 항상 이놈의 회로들이 왜 등장하나 싶었는데, 이 책을 통해 어느 정도 자연스럽게 납득할 수 있었다는 점이다. 다른 책들에서는 설명이 너무 당위적이었던 것으로 기억된다. 오실레이터 그림과 데이터가 저장되기 시작하는 지점의 삽화는 아직도 머리에 생생하다. ㅋㅋㅋ

WRITTEN BY
리컨
영화를 즐기는 취미를 기록한 블로그입니다.

,