본문 바로가기
IT 공부/컴퓨터 하드웨어 및 구조

폰 노이만 구조의 혁신

by exdus3156 2024. 3. 5.

폰 노이만 이전에도 컴퓨터는 있었다. 컴퓨터란 정보를 저장하고 처리하는 장치다. 물론 이 정의를 일반화하여 고대 중국의 주판을 컴퓨터라 할 수도 있다. 하지만 이 글의 논의에서 말하는 컴퓨터는 전자 컴퓨터를 말한다.

이런 관점에서 봤을 때, 최초의 컴퓨터는 존 모클리와 존 애커트가 1940년대에 개발한 애니악(ENIAC)이다.

ENIAC

 

문제는 에니악이 우리가 일반적으로 생각하는 범용 컴퓨터가 아니라는 점에 있었다. 이 때문에 에니악을 최초의 컴퓨터로 볼 수 없다는 시각이 현재는 주류의 의견이다. 

우리가 컴퓨터에게 시키는 일은 알고리즘(계산 절차)을 통해 다양한 데이터 입력값에 대한 출력값을 얻는 것이다. 애니악은 철저하게 수소폭탄 궤적을 위한 알고리즘만을 수행할 수 있었다. 다양한 입력값에 해당하는 수소폭탄의 궤적을 얻어낼 수 있었다. 그러나 알고리즘 자체를 변경할 수는 없었다. 애니악은 평생 수소폭탄 궤적 계산에만 쓰일 수 있었던 것이다.

초기 컴퓨터 개발 역사를 살펴보면 하드웨어와 소프트웨어의 경계가 상당히 모호했던 것을 알 수 있다. 

최초의 컴퓨터는 사람이 직접 스위칭 소자를 직접 이어서 회로를 설계하고 그곳에 전류를 흘려 계산을 수행하는 방식이었다. 따라서 다른 알고리즘을 수행하려면 회로를 다시 처음부터 설계해야 했다.

폰 노이만은 애니악이 범용성에 있어 최악의 구조임을 애니악이 완성되기 전부터 이미 알고 있었다.

다른 문제의 계산이 완전히 불가능한 것은 아니기에 배선을 수정하면 계산을 수행할 수 있겠지만 굉장히 번거로울 것입니다.

 

결국 그들은 함께 모여 범용 컴퓨터인 에드박(EDVAC)을 개발했다. 이를 논문으로 작성해 보고했는데, 존 모클리와 존 애커트는 자신들이 이 발명에 별다른 기여를 하지 못했다고 생각하고 발명의 공을 폰 노이만에 돌렸다. 그때부터 범용 컴퓨터 구조를 폰 노이만 구조라고 부르게 된 것이다.

폰 노이만 구조의 혁신은 바로 하드웨어와 소프트웨어를 구분했다는 점이다.

별도의 배선 변경 없이 원하는 알고리즘을 교체해 사용할 수 있게 되었다. 메모리(기억장치)에서 데이터를 가져오는데, 원래라면 이 데이터들은 입력값이나 출력값에 불과했을 것이다. 그러나 폰 노이만 구조에서는 이 데이터 중에 제어 명령어를 둔다. 이것은 데이터 값에 대해 어떤 계산을 수행해야 하는지에 대한 데이터다.

원래라면 이것은 배선을 조작해서 직접 공학적으로 설계했을 것이다. 그러나 폰 노이만 구조에서는 이 제어(어떤 계산을 수행해야 하는지) 자체를 데이터로 선택할 수 있다. CPU가 하는 일은 바로 이 제어 명령어 데이터를 읽어서 그 명령어가 가리키는 제어를 수행하는 것이다.

덕분에 소프트웨어가 하드웨어로부터 독립하여 비약적으로 발전하는 계기가 되었다.

하지만 동시에 소프트웨어 자체의 문제도 함께 연구되기 시작했다. 배선을 이리저리 돌려가며 간단한 알고리즘 한 두개를 수행하고 끝나는 것이 아니라, 제어 명령어라는 정보만으로 복잡하고 긴 알고리즘도 만들 수 있게 되었기 때문이다. 그럴수록 얼마나 알고리즘이 효율적이며, 얼마나 많은 리소스를 차지하는지에 대한 문제들이 수면 위로 드러났다.