본문 바로가기
[Public] 컴퓨터공학/컴퓨터구조

[컴퓨터구조] 스토어드 프로그램(Stored Program), (폰노이만, 하버드 구조)

by 차출발 2011. 9. 20.
반응형

스토어드 프로그램이 먼가요 ?

   스토어드 프로그램을 알기위해서는 먼저 어떻게 컴퓨터가 발달되었는지 알아보자.



 과거의 컴퓨터는 어떠했을가요?

미리 정의된 기능에 대하여 처리한 후 그 계산의 결과만 보여주는 형태이 었습니다.

그러다 보니 정해진 기능만 사용자에게 제공할 수 밖에 없게 된다는 문제점을 지니고 있습니다.


그럼 현대로 들어오면서 컴퓨터는 어떻게 되나요?

보편적으로 사용되는 공통된 데이터 처리 기능을 조합하여 확장된 기능을 할 수 있도록 발전되었습니다.

즉 하드웨어를 만드는 하드웨어 설계자의 역할과

컴퓨터 시스템을 이용하여 어플리케이션을 만드는 소프트웨어 설계자의 역할이 구분이 된거죠

이 때분터 소프트웨어 하드웨어 가 나눠진게 아닐가 싶습니다. 


ㄹ    나누기 전에는 어떻게 사용했죠 그럼?


        
초기에는 하드웨어를 이용한 프로그램을 작성하는데 있어 물리적인 방법이 사용되었습니다.

 진공관으로 구성되는 회로의 연결상태를 물리적으로 바꾸어 하드웨어 기능을 프로그래밍했던거죠

이렇게 프로그래밍 할려면 프로그래머가 회로의 세부적인 연결상태를 물리적으로 직접 변경해줘야 하는 단점을 가졋죠 

그러다 보니 회로 자체의 내구성이 전체 컴퓨터의 문제점으로 프로그래머의 사소한 실수가 전체 시스템의 문제를 일으켯죠
 

이 뿐만 아니라 물리적인 프로그래밍 자체에 많은 시간을 필요로 한다는 단점도 가지고 있습니다.

먼저 하드웨어의 세세한 부분을 이해하여야 프로그램을 할수 있었다는 거죠

회로의 물리적인 연결상태를 변경하므로 회로의 동작원리를 알아야 한다는 거죠

모르면 회로를 물리적으로 변경 못하니  이거 참 ! 답이 없네요 ㅋㅋ

 
 

그럼 이 문제점은 어떻게 해결하죠?

      자 그 문제점을 해결하고자 하는게 스토어드 프로그램 (Stored Program) 입니다.

프로그램은 데이터와 동일하게 숫자로 표현하여 데이터와 동일한 형태로 저장장치에 저장하는 거죠



       그럼 스토어드 프로그램은 머가 좋은건가요? 

프로그램에서 사용하는 데이터와 프로그램 그자체가 똑 같은 형태로 메모리 저장공간을 점유하다 보니

데이터를 처리할 때와 같은 방법으로 새로운 프로그램을 만들 수 있고 기존 프로그램을 변경할 수도 있다는 거죠

쉽게 말해서 기존 물리적인 방법과 다르게 프로그램을 이용한 프로그래밍이 가능하게 되었고

하드웨어 구현에 대한 전문지식이 없어서 원하는 프로그램을 작성 할 수 있다는 거죠


 

그럼 스토어드 프로그램을 이용하여 구현된 컴퓨터 시스템에는 어떤 것이 있을가요?

 본 개념을 구현하기 위한 대표적인 하드웨어 아키텍쳐는 폰 노이만의 아키텍쳐하버드 아키텍쳐가 있습니다.
 

 

폰 노이만 아키텍쳐는(Von Neumann architecture) 머죠?

프로그램과 데이터는 메모리에 동일한 방식으로 저장되며 컴퓨터는 동일한 방식으로 처리합니다.

제어기를 통하여 산술 논리 연산기(ALU) 제어가 이루어지며 사용자가 의도한 연산과정이 수행됩니다.

데이터는 메모리를 통하여 제공되며

처리 결과는 내부의 작은 공간인 누산기(Accumulator)에 적재되어 이 후 의 연산과정에 사용됩니다.
 

<폰노이만 구조>
 
 

폰 노이만 아키텍쳐가 좋네요 그럼 이건 문제점이 없나요? 
 

사람들은 이 아키텍쳐를 사용하다가 느낀게 프로그램과 데이터가 완벽하게 동일하게 처리할 필요성이 없다는 것

프로그램과 데이터 각각에 대해서 메모리의 기본 단위 크기인 워드의 크기 역시 같을 필요가 없다는 것을

느끼게 되었습니다.


예를 들자면

제어 위주의 처리가 주가 되는 임베디드 시스템의 경우 복잡한 제어 알고리즘을 구현하는 비교적 큰 크기의 프로그램이 필요한 반면에 그 프로그램에서 필요로 하는 데이터 자체를 저장하는 경우는 상대적으로 드믐것으로 알려져 있습니다.
이러한 시스템을 폰 노이만 아키텍쳐로 구현한다면 전체 메모리에서 프로그램이 차지하는 비중이 데이터가 차지하는 비중에 비해 상대적으로 커지기 때문에 동일한 방식의 메모리 접근은 상대적으로 비효율적이다는 것을 알 수가 있습니다.



또 단일 포트를 갖는 메모릴만을 사용하는 경우 폰 노이만 아키텍쳐는 프로그램과 데이터를 동시에 접근할 수 없기에 이로 인하여 성능 저하를 감수해야한다는 단점도 가지고 있습니다.




 이 문제에 대한 대안은 없나요? 

그래서  하버드 아키텍쳐(Havard architecture) 입니다.

프로그램과 데이터에 대한 처리를 구별하여 논리적으로 분리된 공간을 저장하는 새로운 아키텍쳐입니다.

프로그램과 데이터가 논리적으로 분리되어 각각의 프로그램 메모리와 데이터 메모리에 저장합니다.

이들 메모리는 서로 다른 특성을 가지나 데이터와 마찬가지로 숫자로 표현되어

메모리에 저장된 상태로 처리된다는 점은 스토어드 프로그램의 기본개념에 기반합니다.

고성능 하드웨어를 구현하기 위하여 적당한 구조를 갖추고 있으며

프로그램과데이터를 저장하는 메모리의 종류가 서로 다를 수 있기 때문에 더 효율적인 메모리를 사용할 수 있다.


<하버드 구조>





도움이 되셨다면 리플하나 남겨주는 센스 ^^