휴게실
1. 폰 노이만 구조
폰 노이만 구조는 존 폰 노이만이 고안한 내장 메모리 순차처리 방식이다. 데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조를 말한다.
폰 노이만의 가장 큰 업적은 현재와 같은 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조의 확립이다. 폰 노이만은 맨해튼 프로젝트에 참여할 당시 발표한 논문 <전자계산기의 이론 설계 서론>에서 CPU, 메모리, 프로그램 구조를 갖는 프로그램 내장 방식 컴퓨터의 아이디어를 처음 제시하였고, 7년 후 케임브리지 대학교의 의뢰로 자신이 주창한 세계 최초의 프로그램 내장 방식 컴퓨터 EDSAC을 제작한다. 이후에 나온 컴퓨터는 모두 폰 노이만의 설계를 기본 구조로 디자인되고 있다.
⇒ 폰 노이만 병목현상
폰 노이만 병목(Von-Neumann Bottleneck)현상은 일반적으로 자료경로의 병목현상 또는 기억장소의 지연 현상을 이르는데, 이는 나열된 명령을 순차적으로 수행하고, 그 명령은 일정한 기억장소의 값을 변경하는 작업으로 구성되는 폰 노이만 구조에서 기인한다. 어쨌든 주류를 이룬 컴퓨터는 대개 이 폰 노이만 구조를 근간으로 발전해 왔고, 우리가 흔히 CPU라고 말하는 중앙 처리 장치는 전자 공학, 반도체 기술 및 소재의 혁신적인 발전에 따라 점점 작은 크기에 집적되게 되었고 그 처리 능력도 비약적으로 발전해 왔다.
2. 하버드 구조
하버드 마크 I(Harvard Mark I) 라는 릴레이 컴퓨터로부터 나온 말로 이 머신은 명령을 천공 테이프에 메모리해 데이터를 릴레이의 ON/OFF 상태로 메모리 했다. 이러한 초기의 머신에서는 메모리 영역이 지극히 작았기 때문에 CPU 내부에 모든 메모리 영역이 포함되어 있어 명령 메모리 영역을 데이터로서 취급할 수가 없었다.(프로그래밍은 완전히 오프라인의 작업이며, 프로그램의 내용을 컴퓨터 자신이 참조하거나 갱신하거나 하는 것은 있어 이득이 없었다.)
폰 노이만 구조에서는 CPU는 메모리로부터 명령을 읽고, 메모리로부터 데이터를 읽고 쓰기도 한다. 명령과 데이터는 같은 신호 버스와 메모리를 사용하기 때문에 이러한 액세스하는 경우 동시에 발생할 수가 없다. 하버드 아키텍처의 컴퓨터에서는 명령을 메모리로부터 읽는 것으로 데이터를 메모리로부터 읽는 것은 동시에 할 수 있다. 하버드 아키텍처의 컴퓨터는 명령의 처리를 끝내자마자 다음의 명령을 읽어들일 수 있기 때문에 보다 더 빠른 속도를 낼 수 있다고 말할 수 있다. 그렇지만 이러한 처리 속도를 높이려면 보다 많은 전기 회로가 필요하다.
폰 노이만 구조는 존 폰 노이만이 고안한 내장 메모리 순차처리 방식이다. 데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조를 말한다.
[편집] 개요폰 노이만의 가장 큰 업적은 현재와 같은 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조의 확립이다. 폰 노이만은 맨해튼 프로젝트에 참여할 당시 발표한 논문 <전자계산기의 이론 설계 서론>에서 CPU, 메모리, 프로그램 구조를 갖는 프로그램 내장 방식 컴퓨터의 아이디어를 처음 제시하였고, 7년 후 케임브리지 대학교의 의뢰로 자신이 주창한 세계 최초의 프로그램 내장 방식 컴퓨터 EDSAC을 제작한다. 이후에 나온 컴퓨터는 모두 폰 노이만의 설계를 기본 구조로 디자인되고 있다.
[편집] 폰 노이만 병목현상폰 노이만 병목(Von-Neumann Bottleneck)현상은 일반적으로 자료경로의 병목현상 또는 기억장소의 지연 현상을 이르는데, 이는 나열된 명령을 순차적으로 수행하고, 그 명령은 일정한 기억장소의 값을 변경하는 작업으로 구성되는 폰 노이만 구조에서 기인한다. 어쨌든 주류를 이룬 컴퓨터는 대개 이 폰 노이만 구조를 근간으로 발전해 왔고, 우리가 흔히 CPU라고 말하는 중앙 처리 장치는 전자 공학, 반도체 기술 및 소재의 혁신적인 발전에 따라 점점 작은 크기에 집적되게 되었고 그 처리 능력도 비약적으로 발전해 왔다.
⇒ 하버드 아키텍처의 부활최근에 CPU의 성능은 메모리의 속도와 비교해 크게 향상했다. 성능을 높이려면 주 메모리의 접근 횟수를 줄이는 노력이 필요하다. 명령을 처리할 때마다 주 메모리에 접근할 필요가 있다고 한다면 성능 향상은 전망할 수 없다. 이른바 「메모리 속박 문제」이다.
메모리는 속도가 올라가면 값이 비싸질 수 있다. 이를 해결하는 방법은 캐시로 불리는 작은 규모의 고속의 메모리를 준비하는 것이다. CPU는 필요로 하는 메모리의 내용이 캐시에 존재하면 성능이 향상된다. 하지만 반대로 필요한 메모리의 내용이 캐시에 없으면, 메모리로부터 캐시에 내용을 가져오는 것이다. 이 캐시의 조정이 컴퓨터의 설계로 중요한 관점이 되고 있다.
최신의 성능이 좋은 CPU 설계에서는 하버드와 폰 노이만 두 쪽 모두의 아키텍처를 도입하고 있다. 캐시 메모리 장치는 보통 명령용과 데이터용으로 분리되어 있다. 하버드 아키텍처는 CPU와 캐시의 관계에 활용되고 있다. 캐시에 오류가 일어나면 주 메모리로부터 데이터를 가져 오고, 명령 캐시나 데이터 캐시에 저장한다. 따라서, 폰 노이만 구조는 CPU 외부에 적용된다.
하버드 아키텍처는 특수한 디지털 신호 처리 프로세스에서 자주 쓰인다. 이를테면, 아날로그 디바이스의 블랙핀 프로세서는 하버드 아키텍처를 활용하고 있다.
또한 범용 마이크로 콘트롤러의 상당수는 하버드 아키텍처에 기반을 두고 있다. 마이크로칩 테크놀로지사의 PIC 마이크로 콘트롤러 등이 그 예이다. 이러한 프로세서는 프로그램과 데이터를 저장하는 작은 메모리를 내장하고 있는 것이 특징이다. 그 때문에 RISC와 하버드 아키텍처를 활용해 1 머신 사이클로 1 명령을 실행할 수 있게 되는 것이다.
⇒ 명령/ 데이터 분리 캐시 문제범용 마이크로 프로세서로 캐시 메모리 장치를 명령 캐시와 데이터 캐시를 분리했을 경우에 보다 성능이 좋은 write back형의 캐시를 사용하면 문제가 발생한다. write back형에는 캐시에 있는 내용을 CPU로 고쳐 썼을 경우에 그것을 주메모리에 동시에 써 되돌리지 말고 그대로 보관 유지해 두는 방식이다. 한편, 주 메모리도 동시에 고쳐 쓰는 캐시를 write through형 캐시라고 말한다. write back형 캐시는 그 캐시 라인을 다른 캐시 라인으로 옮겨놓을 때 주 메모리에 써 되돌리는지 CPU는 명시적으로 캐시 플래시를 지시했을 때에 주 메모리에 전체를 써 되돌린다.
특정 용도가 아닌 컴퓨터에서는 컴파일러를 사용하고 실행 파일을 만든다. 이때 실행 파일을 메모리 맵 파일로 하고 있으면, 명령 줄이 데이터 캐시에 남게 된다. 그러므로 컴파일한 뒤 바로 실행하면 명령 줄이 주 메모리에 써 되돌려지지 않은 경우에 실행이 실패할 가능성이 있다. 인터프리터와 컴파일러가 일체화하고 있는 일부의 고급 언어나 어떤 종류의 개발 환경을 제공하는 소프트웨어에서는 한층 더 현저하게 발생한다. 이러한 경우 컴파일 결과는 그 소프트웨어의 데이터 영역에 있고 있어 그 영역에 트리키인 수법으로 점프하는 것으로 실행하려고 한다. 이 또한 명령 줄이 메모리에 써 되돌려지지 않기 때문에 실행이 실패하는 일이 있다.
이것은 일부분 하버드 아키텍처에 일어나는 문제며, 본질적으로는 폰 노이만 구조이기 때문에 발생하는 문제이다.
[참고]