기타 업적

마이크로프로그래밍

튜링상의 선정 이유에서 언급되지는 않았으나 윌크스의 빛나는 업적으로 마이크로프로그래밍microprogramming을 빼놓을 수 없다. 마이크로프로그래밍은 컴퓨터 프로세서 설계를 새로운 차원으로 끌어 올렸다.

폰 노이만은 <First Draft of a Report on the EDVAC>에서 컴퓨터를 구성하는 요소로 6가지를 들었다.​5​

  • CA (Central Arithmetic part): 산술연산부
  • CC (Central Control part): 제어부
  • M (Memory): 메모리
  • I (Input): 입력처리부
  • O (Output): 출력처리부
  • R (External memory): 외부저장장치

폰 노이만이 생각한 컴퓨터란, 메모리에 저장된 명령어들(그는 이것을 order라고 표현했다. 아직 instruction이라는 표현이 나오기 전이었다)을 제어부(CC)가 해석한 다음에, 필요한 데이터를 산술연산부(CA)로 옮기면, 산술연산부(CA)가 계산한 결과값을 다시 메모리에 저장하는 장치였다. 외부저장장치(R)는 펀치카드나 테이프, 혹은 타이프라이터처럼 사람이 개입하는 데이터 저장장치를 말했다. 그리고 외부저장장치(R)와 시스템 내부의 CA, CC, M 사이에서 데이터를 옮기는 일을 입력처리부와 출력처리부가 담당했다.

이 구조에서는 데이터의 흐름이 여기저기에서 발생한다. 외부저장장치(R)과 내부의 CA, CC, M 사이에서 일어나는 것 외에도 M과 CC 사이, M과 CA 사이에서도 데이터의 이동이 필요하다. 그것은 명령어order일 수도 있고 산술연산의 결과일 수도 있다.

또한, 산술연산부(CA)는 말 그대로 계산을 담당하는데, 덧셈, 뺄셈, 곱셈, 나눗셈, 제곱근 계산 등을 생각할 수 있겠다. 실제로 폰 노이만은 나눗셈과 제곱근 계산을 구현하는 회로를 논문에서 설명하기도 했다. 그의 회로는 당시에 유행하던 진공관을 사용하지 않고 생물학적인 뉴런을 기본 단위로 사용했다.​††​ 생물학적인 뉴런을 조합해서 만든 덧셈, 뺄셈, 곱셈, 나눗셈, 제곱근 계산 회로는 정확한 결과를 얻기 위해서 구성 뉴런들을 제어해주어야 한다. 즉, 어떤 뉴런은 비활성화시키고 어떤 뉴런은 활성화시켜야 한다.

지금까지 설명한 것을 정리해보면, 컴퓨터 프로세서가 정상적으로 동작하기 위해서는 내부 구성 요소 사이의 데이터 전달을 정교하게 제어해야 할 뿐만 아니라 산술연산부를 구성하고 있는 뉴런들도 각각 제어해 주어야 한다. 그런데 제어란 무엇인가? 제어의 실체는 신호이다. 즉 제어할 대상에게 어떤 신호를 보내거나 보내지 않음으로써 제어가 이루어진다. 앞에서 간략하게 설명한 부분들만 합쳐보아도 상당한 종류의 신호들이 필요함을 눈치챌 수 있을 것이다.

이렇듯 신호들의 조합에 의해 결국 컴퓨터 프로세서의 동작이 이루어진다. 좀 더 확장해서 설명하면 메모리에 있는 명령어order를 해석하여 이 많은 신호들의 값과 순서를 만들어 내야 한다는 말이다. 이렇게 신호들을 정해진 순서대로 차례차례 만들어 내는 일을 하는 회로를 시퀀싱 유닛Sequencing unit이라고 불렀다.​7​

윌크스는 EDSAC을 개발하면서 시퀀싱 유닛을 붙박이 회로 형태로 만들었다. 즉, 일단 완성된 후에는 수정이 불가능했다. 그리고 다양한 신호들을 단계별로 생성하는 회로는 만들기가 매우 까다로웠다. 그는 이 시퀀싱 유닛을 쉽고 유연하게 구현할 방법을 고민했다.

내부의 회로를 제어하는 신호들도 결국은 0 혹은 1의 값을 가진다. 따라서 이 신호들이 특정 시점에 가져야 하는 값들을 쭉 붙여놓으면 그것은 마치 기계어 코드처럼 보일 것이다. 그렇다면 순차적으로 발생해야 하는 내부 제어 신호들의 값 묶음을 순서대로 나열해 놓고 이것을 차례대로 발생시킨다면 원하는 회로의 동작을 얻게 될 것이다.

이렇게 내부 제어 신호들의 순차적 값들을 순서대로 배열하는 것이 마이크로프로그래밍이다. 마이크로프로그래밍의 장점은 복잡한 타이밍 생성 회로를 메모리로 대체할 수 있다는 것이다. 내부 제어 신호들의 순차적 값 묶음을 메모리에 저장하고 순서대로 꺼내서 해당 제어신호에 출력해주면 마찬가지 효과를 낼 수 있기 때문이다. 이는 회로 구성을 단순하게 해주었다. 또한, 메모리에 저장된 제어신호의 값을 바꾸는 식으로 회로의 동작 방식을 수정할 수 있었다.

윌크스는 EDSAC2에서 마이크로프로그래밍을 적용하여 실현 가능함을 입증했다. 마이크로프로그래밍 기법은 IBM이 System/360에 적용하면서 유명해졌다. System/360은 공전의 성공을 거두었고 덕분에 마이크로프로그래밍 기법은 널리 퍼지게 된다. 현대의 마이크로프로세서 설계에서 마이크로프로그래밍은 없어서는 안 되는 기술이다.

1 2 3 4 5 6 7 8