폰 노이만 구조 | 완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제 239 개의 자세한 답변

당신은 주제를 찾고 있습니까 “폰 노이만 구조 – 완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제“? 다음 카테고리의 웹사이트 https://you.pilgrimjournalist.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.pilgrimjournalist.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 기술노트with 알렉 이(가) 작성한 기사에는 조회수 4,947회 및 좋아요 169개 개의 좋아요가 있습니다.

폰 노이만 구조(영어: Von Neumann architecture)는 에드박의 보고서 최초 초안(First Draft of a Report on the EDVAC)에서 수학자이자 물리학자 존 폰 노이만과 다른 사람들이 서술한 1945년 설명에 기반한 컴퓨터 아키텍처이다.

폰 노이만 구조 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제 – 폰 노이만 구조 주제에 대한 세부정보를 참조하세요

#컴퓨터구조#CPU#정처기#컴퓨터공부
이렇게 쉽게 말한다고 떠나가지 마세요~
점점 어려워 질께요^^
멤버쉽 가입하시면 IT분야 진로 상담, 앱개발 컨설팅 1:1로 진행합니다~
https://www.youtube.com/channel/UCBtG00ljZ8R_DBQCTR4C00A/join

폰 노이만 구조 주제에 대한 자세한 내용은 여기를 참조하세요.

폰노이만 구조 – 나무위키

존 폰 노이만이 제시한 컴퓨터 구조. 프로그램 내장 방식이라고도 불리며, 이론적으로는 튜링 머신과 같은 일을 할 수 있다.[1] 폰노이만 구조가 등장하기 …

+ 여기를 클릭

Source: namu.wiki

Date Published: 5/12/2021

View: 6504

폰 노이만 구조와 하버드 구조 – velog

Von Neumann architecture. 존 폰노이만이 제시한 컴퓨터 구조. 프로그램 내장 방식이라고도 불립니다. 그 이전의 컴퓨터들은 스위치를 설치하고 전선 …

+ 여기를 클릭

Source: velog.io

Date Published: 2/11/2022

View: 565

폰 노이만 구조 | ‍ Tech Interview

# 폰 노이만 구조 … 데이터는 메모리에 읽거나 쓰는 것이 가능하지만, 명령어는 메모리에서 읽기만 가능하다. 즉, CPU와 하나의 메모리를 사용해 처리하는 …

+ 여기에 표시

Source: gyoogle.dev

Date Published: 4/3/2022

View: 8863

폰 노이만 구조 – 기록

폰 노이만 구조는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성되어 있습니다. CPU와 메모리는 서로 분리되어 있고 둘을 연결하는 버스를 …

+ 여기를 클릭

Source: jjangsungwon.tistory.com

Date Published: 11/8/2022

View: 5781

주제와 관련된 이미지 폰 노이만 구조

주제와 관련된 더 많은 사진을 참조하십시오 완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제
완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제

주제에 대한 기사 평가 폰 노이만 구조

  • Author: 기술노트with 알렉
  • Views: 조회수 4,947회
  • Likes: 좋아요 169개
  • Date Published: 2022. 1. 17.
  • Video Url link: https://www.youtube.com/watch?v=dF1BHjt3Bdc

폰 노이만 구조

폰 노이만 구조

폰 노이만 구조(영어: Von Neumann architecture)는 에드박의 보고서 최초 초안(First Draft of a Report on the EDVAC)에서 수학자이자 물리학자 존 폰 노이만과 다른 사람들이 서술한 1945년 설명에 기반한 컴퓨터 아키텍처이다.[1] 해당 문서는 다음의 부품과 함께 전자 디지털 컴퓨터의 설계 구조를 설명한다:

내장 메모리 순차처리 방식으로서, 데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조를 말한다.

개요 [ 편집 ]

폰 노이만의 가장 큰 업적은 현재와 같은 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조의 확립이다. 폰 노이만은 맨해튼 프로젝트에 참여할 당시 발표한 논문 <전자계산기의 이론 설계 서론>에서 CPU, 메모리, 프로그램 구조를 갖는 프로그램 내장 방식 컴퓨터의 아이디어를 처음 제시하였고, 7년 후 케임브리지 대학교의 의뢰로 세계 최초의 프로그램 내장 방식 컴퓨터 EDSAC을 제작한다. 이후에 나온 컴퓨터는 모두 폰 노이만의 설계를 기본 구조로 디자인되고 있다.

폰 노이만 병목현상 [ 편집 ]

폰 노이만 병목(Von-Neumann Bottleneck)현상은 일반적으로 자료경로의 병목현상 또는 기억장소의 지연 현상을 이르는데, 이는 나열된 명령을 순차적으로 수행하고, 그 명령은 일정한 기억장소의 값을 변경하는 작업으로 구성되는 폰 노이만 구조에서 기인한다. 어쨌든 주류를 이룬 컴퓨터는 대개 이 폰 노이만 구조를 근간으로 발전해 왔고, 우리가 흔히 CPU라고 말하는 중앙 처리 장치는 전자 공학, 반도체 기술 및 소재의 혁신적인 발전에 따라 점점 작은 크기에 집적되게 되었고 그 처리 능력도 비약적으로 발전해 왔다.

같이 보기 [ 편집 ]

각주 [ 편집 ]

컴퓨터의 구조는 어떻게 생겼을까? 폰 노이만 구조

폰 노이만 구조에 대해 알아보기 전, 폰 노이만에 대해 간단히 알아보겠습니다. 폰 노이만은 컴퓨터 분야 외에도 수학, 경제학, 물리학 등 다양한 분야에 큰 영향을 끼친 인물입니다. 과학자들이 인정한 ‘천재 중의 천재’로도 유명합니다. 우리가 흔히 천재로 알고 있는 아인슈타인, 오펜하이머, 괴델과 함께 프린스턴 고등 연구소의 ‘반신(半神)’이라는 별명을 얻었을 정도면 얼마나 뛰어난 과학자였는지 체감할 수 있을 것입니다.

폰 노이만은 대학교수 시절에 양자역학의 수학적 기초와 집합론의 공리화, 에르고드 이론의 연구, 실내 게임 이론 등에 관한 논문을 집필했습니다. 하나만으로도 상당한 가치가 있는 논문을 매달 집필하여 수십 개의 논문을 발표했다고 합니다.

이후 세계 2차대전 때는 미국과 영국, 캐나다에서 비밀리에 진행한 핵무기 개발 프로젝트인 맨해튼 프로젝트에 참여했는데요, 원자폭탄의 핵심 기술인 고폭발성 렌즈를 개발한 이후 인공 생명을 최초로 연구하여 자기 복제의 원리를 수학적으로 증명했습니다.

폰 노이만 구조의 개념과 동작

오늘날 거의 모든 PC는 폰 노이만 구조를 따르고 있습니다. 폰 노이만 구조는 이름 그대로 존 폰 노이만이 제시한 컴퓨터 아키텍처로, 프로그램 내장 방식이라고도 불립니다.

이 글에서는 존 폰 노이만이 제시한 폰 노이만 구조에 대해 자세히 알아보고자 합니다.

역사

폰 노이만 구조 이전의 컴퓨터는 배전반의 연결을 통해 연산을 수행했습니다. 만약 앞선 연산과 다른 연산을 수행하고 싶다면, 배선을 다 들어내고 직접 전선의 위치를 바꿔가며 프로그래밍을 수행해야 하는 번거로움이 있었고, 시간도 많이 소요되었습니다.

폰 노이만 구조 이전의 컴퓨터 프로그래밍 모습

이런 단점을 해결한 새로운 아키텍쳐가 1945년 존 폰 노이만에 의해 “EDVAC의 보고서 최초 초안”에서 등장하게 됩니다.

폰 노이만 구조의 특징

폰 노이만 구조는 최초의 프로그램이 내장된 컴퓨터 방식으로, 하드웨어적으로 전선을 재배치할 필요 없이 소프트웨어만 교체하여 다른 연산을 수행할 수 있습니다.

폰 노이만 구조에서는 먼저 연산의 수행과 관련된 명령어와, 연산에 필요하거나 결과로 나온 데이터를 저장장치(메모리)에 보관하게 되며, 순차적으로 메모리에 저장된 용을 끄집어내 지시대로 연산 수행하는 방식입니다.

오늘날의 모든 컴퓨터는 이런 폰 노이만 구조를 따르고 있습니다.

폰 노이만 구조

폰 노이만 구조 컴퓨터의 명령 주기

폰 노이만 구조의 컴퓨터에서는 미리 연산에 수행에 관련된 명령어가 기억장치에 저장되어 있고 이를 가져와 지시대로 연산을 수행하게 됩니다. 이를 명령어 실행 사이클이라고 합니다.

이 명령어 실행 사이클은 크게

명령어 가져오기 명령어 실행하기 인터럽트 체크

의 과정으로 나뉩니다. 이 과정을 다시 세분화하면 아래와 같이 5가지로 나눌 수 있습니다.

명령어 가져오기 (IF, Instruction Fetch)

기억장치(오늘날의 메모리)부터 명령어를 가져오는 과정. 명령어 해석 (ID, Instruction Decode)

앞서 가져온 명령어가 어떤 명령어인지 해석을 진행하는 과정. 피연산자 인출(OF,Operands Fetch)

명령의 실행에 필요한 정보를 기억장치로에 접근해 가져오는 과정. 명령어 실행 (EX, Instruction Execution)

앞서 가져온 연산자와 데이터를 가지고 연산을 수행하고 저장한다. 인터럽트 체크

폰 노이만 구조이후의 컴퓨터는 명령어 실행 사이클을 계속해서 반복하게 됩니다. 기존의 컴퓨터에 비해 하는 일은 오히려 단순해졌다고도 볼 수 있습니다. 위의 과정만을 계속해서 반복하기만 하면 되니까요.

그러면 이런 명령어 실행 사이클이 실제 컴퓨터에서 어떻게 일어나는지 구체적으로 한번 살펴보겠습니다.

컴퓨터 구조

구체적인 명령어 실행 사이클에 대해 알아보기 전, 컴퓨터 구조에 대한 이해가 먼저 필요합니다.

오늘날의 컴퓨터 하드웨어는 CPU와 주기억장치(메모리), 보조기억장치(HDD, SSD 등..), 그리고 입력 장치와 출력 장치로 구성되어 있습니다. 또 이 장치들은 자료 교환을 위해 버스라는 공용 통로를 두고 연결되어 있습니다.

각각에 대해 하나하나 살펴보겠습니다.

CPU

CPU는 CU와 ALU, 레지스터들로 구성되어 있습니다.

CU는 Control Unit의 약어로 명령을 해석하고, 명령의 실행을 위한 제어신호를 발생시키는 일을 합니다.

ALU는 Ariethematic Logic Unit의 약어로 산술, 논리 연산 장치라고도 불립니다. 이 ALU는 CU의 신호에 따라 실질적인 산술, 논리 연산이 일어나게 됩니다.

레지스터는 CPU 내부에 소량으로 있는 고속의 임시 기억 장치입니다. 이 레지스터는 여러 종류가 있는데 이에 대해서도 한번 알아보겠습니다.

CPU의 개괄적인 모습

레지스터

CPU 내부에 존재하며, 명령 처리에 필수적인 레지스터로는 MAR, MBR, PC, IR, ACC 그 외 범용 레지스터로 R1, R2 등이 있습니다.

MAR는 Memory Address Register의 약어로 영어 그대로 메모리의 주소(번지)를 저장합니다.

MBR은 Memory Buffer Register의 약어로 메모리로부터 읽어왔거나, 메모리에 기록할 데이터를 저장합니다. 다른 이름으로 MDR 이라고도 부르기도 합니다.

PC는 Program Counter의 약어로 다음번에 실행할 명령어의 위치(번지)를 지정합니다. PC는 독특하게 한번 읽힐 때마다 값이 1씩 증가하여 특별한 일이 없다면 순차적으로 다음 메모리에 접근할 수 있도록 되어 있습니다.

IR은 Instruction Register로 현재 실행중인 명령어를 보관합니다.

ACC는 Accumulator로 누산기라고도 부른다. ALU에서의 연산의 결과값을 일시적으로 보관하는 역할을 합니다.

메모리

컴퓨터의 메모리는RAM(Random Access Memory)와 ROM(Read Only Memory)로 나뉘며 RAM은 다시 DRAM과 SRAM으로 나뉘게 됩니다.

DRAM은 Dynamic RAM로 캐퍼시터(충전지)로 구성되어 있습니다. SRAM에 비해 상대적으로 느리다는 단점이 있지만 저렴하기 때문에 주기억장치로 사용됩니다.

SRAM은 Static RAM으로 플립플롭 회로로 구성되어 있어 매우 빠릅니다. 다만 그 가격이 비싸 현실적으로 주 기억장치로 사용되기는 힘들어, DRAM의 느린 속도를 보완하기 위한 캐시 등에 사용됩니다.

이 RAM들은 Random Access Memory라는 이름처럼 순차적으로 접근하는 것이 목적이 아니기 때문에, 이후 설명하겠지만 각각의 저장된 내용에 접근하기 위한 고유의 주소가 존재합니다.

ROM(ROM, PROM, EPROM, …)은 영어 그대로 읽기만이 가능한 메모리입니다. 컴퓨터의 부팅을 위한 BIOS 등에 사용되며, 과거에는 정말 읽기만 가능했지만 오늘날에는 전기적으로 지우고 새로 쓸 수 있는 ROM도 존재합니다. 하지만 RAM과 달리 일부만 값을 수정하며 보관하는 방식으로 동작하지 않아 그 용도가 다릅니다.

버스

버스는 컴퓨터를 구성하고 있는 각 컴퓨넌트들의 공용 연결 통로 역할을 합니다.

CPU, 메모리, 입출력 장치들이 모두 이 버스를 통해 자료교환을 진행하게 되며, 애석하게도 한 번에 하나의 장치만 버스에 접근이 가능하기 때문에 누군가 버스를 사용한다면 다른 장치들은 순서를 기다려야 합니다. 덕분에 버스는 필연적으로 복잡해질 수밖에 없고 이는 이후 설명할 하버드 구조로 개선이 이루어지게 됩니다.

프로그램의 동작

앞서 설명한 명령주기를 바탕으로 프로그램의 동작을 예시를 들어가며 알아보겠습니다.

본 내용을 이해하기 위해서는 최소한의 프로그래밍 지식이 필요하며, 설명하는 기계어는 조금씩 다를 수 있으니 내용 하나하나 살펴본다기보다는 전반적인 흐름을 이해하고자 하면 됩니다.

A = 10; B = 20; C = A + B;

위의 소스코드를 컴퓨터에서 동작시켜본다고 가정하겠습니다. 위 코드는 고급 언어로 작성되어 있으므로 컴파일을 진행하면 아래과 같은 기계어로 된 명령과, 실행에 필요한 데이터(A=10, B=20, C=? 등..)가 합쳐진 목적 모듈이 생성됩니다.

load A # A를 메모리에서 불러옴 add B # B를 메모리에서 불러와 더함 store C # 그 결과를 C에 저장

이 목적 모듈은 실행에 필요한 다른 목적 모듈이나 라이브러리(목적 모듈의 모음)과 합쳐지는 링크라는 과정을 거치게 되어 결과물인 실행 모듈이 됩니다. 우리는 이 실행 모듈을 프로그램이라고 부르며, 하드디스크와 같은 보조 기억장치에 이를 저장하게 됩니다.

이 프로그램을 이용하여 연산을 수행하기 위해서는 폰 노이만 구조의 특성상 이 프로그램을 메모리에 올리는 과정이 필요합니다. 왜냐하면 CPU는 오직 메모리에만 직접 접근할 수 있기 때문입니다.

로더를 통해 메모리에 올라간 프로그램을 프로세스라고 부릅니다. 쉽게 명령어를 100번지부터 데이터를 200번지부터 저장하게 된다고 가정해 보겠습니다.

명령어 실행 사이클을 이해하기 앞서 반드시 레지스터 파트를 다시한번 읽고 오셔야 합니다.

첫 번째 사이클

아래 데이터들이 메모리에 올라가면서 동시에 명령의 시작 번지가 CPU의 PC 레지스터에 저장되게 됩니다.

번지(주소) 명령어 / 데이터 변수명 100 (PC) load A 101 add B 102 stove C .

.

. 200 10 A 201 20 B 202 ? C

PC에 저장된 현재 명령어의 번지(예시상 100번지)의 값을 컨트롤 유닛의 제어에 따라 MAR에 저장되며 PC의 자동 증가 특징에 따라 PC는 아래와 같이 101번지를 가리킵니다.

번지(주소) 명령어 / 데이터 변수명 100 (MAR) load A 101 (PC) add B 102 stove C .

.

. 200 10 A 201 20 B 202 ? C

이는 다시 컨트롤 유닛의 제어에 따라 MAR이 가리키는 번지의 값을 메모리에서 불러오게 되며, 메모리 버퍼인 MBR에 저장하게 됩니다.

MAR: 100번지 -> MBR: load A -> IR: load A -> Decoder

MBR에 저장된 load A는 현재 실행 중인 명령을 보관하는 IR에 저장되며, 컨트롤 유닛의 디코더에서 명령어를 해석하여 명령을 실행하게 됩니다. load A는 A라는 변수에 저장된 값을 불러오라는 의미이므로 200번지(A)에 있는 값 10이 MBR을 거쳐 누산기에 저장됩니다.

명령 실행 사이클이 끝나게 되었으므로 cpu는 인터럽트를 체크하고 다시 사이클을 반복하게 됩니다.

두 번째 사이클

이렇게 첫 번째 사이클이 끝나면 바로 두 번째 사이클이 동일하게 진행됩니다.

번지(주소) 명령어 / 데이터 변수명 100 load A 101 (PC) add B 102 stove C .

.

. 200 10 A 201 20 B 202 ? C

앞서 자동 증가된 PC의 값을 MAR로 불러오게 되며, 다시 PC는 자동 증가하여 102번지를 가리킵니다.

번지(주소) 명령어 / 데이터 변수명 100 load A 101 (MAR) add B (MBR, IR)

102 (PC) stove C .

.

. 200 10 A 201 20 B 202 ? C

MAR에 있는 메모리 번지의 값을 꺼내와 MBR에 불러오고, 이를 IR에 저장하게 됩니다.

현재 예시를 기준으로 불러온 값은 add B 일 것입니다.

불러온 명령은 컨트롤 유닛의 디코더로 들어가 명령을 해석하게 되며, 명령에 따라 MBR에 변수 B의 값(20)을 불러온 뒤 누산기를 거쳐 앞서 불러온 값 10과 더하는 과정을 진행할 것입니다.

결과적으로 누산기에는 10과 20의 합인 30이 저장되어 있을 것입니다.

마찬가지로 인터럽트를 체크하고 다시 사이클을 반복하게 됩니다.

세 번째 사이클

첫 번째, 두 번째 사이클과 동일하게 동작합니다.

번지(주소) 명령어 / 데이터 변수명 100 load A 101 add B 102 (PC) stove C .

.

. 200 10 A 201 20 B 202 ? C

아까 두번째 사이클에서 PC의 번지가 자동 증가가 되었기 때문에 현재 PC가 가리키는 번지는 102번지일 것입니다. PC에서 다음 실행할 번지 값을 읽어 MAR에 저장합니다.

MAR에 저장된 번지에 있는 메모리 값을 컨트롤 유닛의 제어에 따라 MBR로 불러오게 되며, 이 명령어 stove C는 다시 현재 실행중인 명령을 저장하는 IR에 저장됩니다.

IR에 저장된 명령어는 컨트롤 유닛의 디코더에서 해석이 이루어지며, 현재 명령 stove C는 누산기에 저장된 연산 결과를 C라는 변수에 저장하라는 것이기 때문에 누산기에 저장되어 있던 30이라는 값을 MBR을 거쳐 C(202) 번지에 저장하게 됩니다.

번지(주소) 명령어 / 데이터 변수명 100 load A 101 add B 102 (MAR) stove C (IR) .

.

. 200 10 A 201 20 B 202 30 (MBR)

C

폰 노이만 구조의 문제점

지금까지 폰 노이만 구조의 컴퓨터가 동작하는 방식을 알아보았지만, 여기에는 치명적인 단점이 하나 있습니다.

메모리 파트에서 설명드린 것과 같이 주기억장치로 DRAM을 사용하고 있는데 이것이 CPU의 동작 속도보다 너무나 느리다는 점입니다. CPU는 메모리에서 명령과 데이터를 불러와야 하지만 RAM과 CPU의 속도 차이로 인해 병목 현상(CPU가 메모리의 응답까지 기다리게 됩니다)이 발생합니다.

이를 폰 노이만 병목 현상이라고 부릅니다.

하버드 구조

이런 폰 노이만 병목 현상을 완화하고자 나타난 방법중 하나가 하버드 구조입니다.

하버드 구조는 명령어와 데이터를 나눠서 보관합니다.

버스 또한 폰 노이만 구조에서는 제어신호, 명령어, 데이터를 모두 하나의 버스로 이용했지만 하버드에서는 이 각각을 위한 전용 버스를 구성하여 버스의 혼잡을 줄이게 됩니다.

이로 인해 명령을 읽으면서 동시에 데이터를 저장하는 등의 행위가 가능해져 폰 노이만 병목현상을 조금이나마 완화할 수 있도록 개선되었습니다.

하버드 구조의 버스

글에 추가를 원하는 사항이 있으시거나, 잘못된 부분을 발견하셨다면 댓글을 달아주거나 메일을 보내주시면 확인 후 수정하도록 하겠습니다.

최초 발행일 2021-09-29

마지막 수정일 2021-09-29

폰 노이만 구조

반응형

목표

폰 노이만 구조를 이해할 수 있다.

폰 노이만 구조의 장단점을 이해할 수 있다.

1. 애니악(ENIAC)

폰 노이만 구조가 나오기 전에는 애니악이라는 컴퓨터가 주로 이용되었습니다. 애니악은 계산을 할 때마다 손으로 직접 진공관의 회로 스위치를 다시 조정하여 새 입력을 처리하는 하드웨어 프로그램 방식입니다.

2. 폰 노이만 구조

폰 노이만 구조 (출처: 위키백과)

폰 노이만 구조는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성되어 있습니다. CPU와 메모리는 서로 분리되어 있고 둘을 연결하는 버스를 통해 명령어 읽기, 데이터 읽기 및 쓰기가 가능합니다. 메모리 안의 프로그램과 데이터 영역은 물리적 구분이 없기 때문에 같은 메모리와 버스를 사용합니다. 따라서 CPU가 명령어와 데이터에 동시 접근할 수 없습니다.

폰 노이만 구조의 가장 큰 장점은 프로그램 내장 방식 컴퓨터라는 점입니다. 예전에는 다른 기능을 수행하기 위해서 손으로 직접 회로를 조정하는 작업이 필요하였지만 내장 방식 컴퓨터는 다양한 기능을 담은 소프트웨어가 메모리 안에 내장되어 있습니다. 따라서 연산이 필요할 때마다 메모리 안의 프로그램과 데이터를 CPU에 전달하여 계산을 처리할 수 있습니다. 애니악과 달리 하드웨어는 그대로 두고 소프트웨어만 교체하면 다양한 작업을 처리할 수 있기 때문에 편의성이 크게 증가하였고 범용성이 향상되었습니다.

CPU가 연산을 처리하는 과정은 다음과 같습니다. 메모리로부터 명령을 가져오고(fetch), 명령어의 의미를 해석한 후(decode), 명령어를 실행(execute)하고 결과를 저장(store)합니다. 그리고 폰 노이만 구조는 ‘내장 메모리 순차처리 방식’을 따르고 있기 때문에 CPU는 순차적으로 한 번에 명령어 하나씩 실행합니다.

2.1 폰 노이만 구조의 단점

폰 노이만 구조는 프로그램 메모리와 데이터 메모리가 물리적 구분 없이 하나의 버스를 통해 CPU와 교류하기 때문에 계산 속도가 기억장치 속도에 영향을 받습니다. 기억장치의 속도가 전체 시스템의 성능 저하를 야기하는 이 현상을 폰 노이만 병목현상(Bottleneck)이라고 합니다.

또 다른 문제점은, 순차적으로 한 번에 하나의 명령어만을 처리하기 때문에 CPU를 효율적으로 사용하지 못한다는 점입니다. 폰 노이만 구조의 순차처리 방식은 정밀하게 작성된 프로그램을 실행하는 데에는 탁월하지만, 이미지나 소리와 같은 아날로그 데이터를 처리하는 데에는 효율성이 낮다는 한계가 있습니다. 이를 해결하기 위해 한 번에 여러 개의 명령어를 처리하는 다양한 병렬 처리 방식이 등장하였습니다. 그러나 병렬 처리 기반으로 하는 컴퓨터 구조를 만들기에는 지나치게 복잡하다는 점과 모든 문제에 효율적으로 적용되는 것이 아니라는 점, 처리를 위해 부가적으로 시간이 들어가는 오버헤드가 발생한다는 점 등 여러 단점으로 인해 폰 노이만 구조를 완전히 대체하기에는 적절하지 않습니다.

3. 하버드 구조

폰 노이만 구조의 병목현상을 해결하기 위한 방법 중 하버드 구조에 대해서 알아보겠습니다. 하버드 구조는 CPU가 명령어와 데이터를 동시에 사용할 수 있도록 명령용 버스와 데이터용 버스를 물리적으로 구분했습니다. 이를 통해 현재 명령의 처리를 끝냄과 동시에 다음 명령을 읽어 들일 수 있기 때문에 기존의 폰 노이만 구조보다 더 빠른 속도를 낼 수 있습니다. 그렇지만 이렇게 처리 속도를 높이려면 더 많은 버스가 필요하므로 설계가 복잡하다는 단점이 있습니다. 따라서 현대에는 하나의 구조만 사용하는 것이 아니라 CPU의 외부적으로는 폰 노이만 구조를, 내부적으로는 하버드 구조를 적용함으로써 각 구조의 장점을 최대한 활용하는 구조가 등장하고 있습니다.

하버드 구조 (출처 : 위키백과)

반응형

프로그램 내장 방식의 폰노이만 구조(Von Neumann Architecture)

폰노이만 구조(Von Neumann Architecture)는 존 폰노이만이 제시한 컴퓨터 아키텍처이다. 이를 다른 말로 프로그램 내장 방식(Stored Program Concept)으로도 불리는데 에드박(EDVAC)의 보고서 최초 초안(1945년)인 First Draft of a Report on the EDVAC에서 설명한 컴퓨터 아키텍처이다. 이처럼 폰노이만이 제안한 컴퓨팅 모델은 그의 이름을 따서 폰노이만 아키텍처라고 부르거나 그의 소속 대학을 따서 프린스턴 아키텍처(Princeton Architecture)라고 부르기도 한다.

폰노이만 구조 이전, 비슷한 시도를 한 것은 컴퓨터의 아버지라 할 수 있는 영국의 앨런 튜링이었다. 이미 앨런 튜링은 1937년에 튜링 기계(Turing Machine)을 소개하면서 소프트웨어를 사용하는 방법을 고안한 적이 있었으나, 세계 2차 대전 이후 이후 미국은 적극적으로 주도하여 ENIAC을 비롯하여, 프로그램 내장 방식의 다음 모델은 EDVAC까지 일사천리로 진행하고 있었다. EDVAC은 폰 노이만이 컨설던트로 참여하여, 메모리에 프로그램과 데이터가 저장되는 구조를 제안하였고, 이 구조는 아직까지 사용하게 된다.

참고로 최초의 폰노이만 컴퓨터는 컨설던트로 참여한 EDVAC이 아니고, 폰노이만이 직접 진두지휘한 IAS(Institute for advanced studies) 컴퓨터로 1946년에 개발하기 시작하여 1952년에 프린스턴이 완성한 컴퓨터이다.

프로그램 내장 방식의 폰 노이만 구조

가. 폰 노이만 구조의(Von Neumann Architecture)의 개념

– 튜링이 완전하며, 명령어와 데이터가 함께 있는 프로그램 내장 방식의 컴퓨터 아키텍처

– 단일 저장장치(메모리)에 연산의 수행과 관련된 일련의 명령어와 연산에 필요 혹은 결과로 생성된 데이터를 함께 수용하는 컴퓨터 아키텍처

John Von Neumann (1903 ~ 1957)

나. 특징

범용성향상 : HW 전선을 재배치 할 필요 없이 SW만 교체 (최초의 프로그램이 내장된 컴퓨터)

병목현상 : 메모리에 명령어와 데이터가 함께 존재

– 병목현상을 없애기 위해서, 메모리 계층 구조, NUMA, 하버드 아키텍처 등과 같은 다양한 기술 및 아키텍처 등장

폰노이만 아키텍처의 구조도

CPU는 한번에 하나의 명령어만 실행이 가능하다

명령어 실행은 반드시 메모리에 상주하여 수행한다

Fetch -> Decode -> Execute -> Stored Cycle로 처리한다

폰 노이만 구조의 문제점과 해결방안

가. 폰 노이만 구조의 문제점

CPU의 비효율적 활용 : 한번에 하나의 명령어 처리로 CPU를 효율적으로 사용하지 못함

메모리 버스 병목현상 : 명령어와 데이터를 하나의 주기적 장치에 저장

나. 폰 노이만 구조의 문제점 해결방안

병렬처리 : 명령어 병렬처리, SMP, MPP 등 다양한 병렬처리 시도

하버드아키텍처 : 데이터 버스를 명령어용과 데이터용으로 분리

IBM 등에서 인간의 뇌 구조를 모방한 “뉴로모픽 컴퓨팅”으로 궁극적인 아키텍처의 한계점을 벗어나는 노력 시도 중

참고자료

https://namu.wiki/w/%ED%8F%B0%EB%85%B8%EC%9D%B4%EB%A7%8C%20%EA%B5%AC%EC%A1%B0 https://ko.wikipedia.org/wiki/%ED%8F%B0_%EB%85%B8%EC%9D%B4%EB%A7%8C_%EA%B5%AC%EC%A1%B0 컴퓨터 아키텍처, 컴퓨터 구조 및 동작원리 (한빛아카데미, 우종성 지음)

연관자료

[Operating System] CPU의 구성과 동작, 폰노이만 구조

반응형

이 글은 ‘쉽게 배우는 운영체제’ 책을 참고하여 작성하였습니다.

폰노이만 구조

오늘날의 컴퓨터는 대부분 폰노이만 구조를 따른다. 폰노이만 구조는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조를 말한다.

폰노이만 구조에서 가장 중요한 특징은 ‘모든 프로그램은 메모리에 올라와야 실행할 수 있다’는 것이다. 저장장치에 있는 프로그램이 있다고 해서 실행되는 것이 아니라, 메모리에 올라와야 실행할 수 있는 것이다.

CPU의 기본 구성

CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산장치(ALU), 제어장치(Control Unit), 레지스터로 구성된다.

산술논리 연산장치 (ALU) CPU에서 데이터를 연산하는 장치이다. 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산이나 AND, OR과 같은 논리 연산을 수행한다.

제어장치 (Control Unit) CPU에서 작업을 지시하는 부분

레지스터 CPU 내에서 사용할 데이터를 임시 보관하는 곳

CPU 명령어 처리 과정

01 LOAD 0x100 r2; 02 LOAD 0x120 r3; 03 ADD r5, r2, r3; 04 MOVE r5, 0x160;

01 : 메모리 0x100에 있는 데이터를 r2에 로드한다.

02 : 메모리 0x120에 있는 데이터를 r3에 로드한다.

03 : r2와 r3의 데이터의 값을 ADD한 후 r5에 넣는다.

04 : r5에 있는 값을 메모리 0x160에 옮긴다.

제어장치는 명령어를 해석하여 제어신호를 보내고 CPU 내의 데이터 흐름을 조절하는 역할을 한다.

레지스터의 종류

CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산한 후 , 그 결과를 레지스터에 저장했다가 다시 메모리로 옮긴다. 이 때 사용되는 레지스터는 데이터 레지스터와 주소 레지스터이다.

사용자 가시 레지스터

데이터 레지스터(DR) : 메모리에서 가져온 데이터를 임시로 보관할 때 사용, 범용 레지스터 or 일반 레지스터라고 부름

주소 레지스터(AR) : 데이터 또는 명령어가 가져온 메모리의 주소가 저장

사용자 불가시 레지스터 (특수 레지스터)

프로그램 카운터(PC) : 다음 실행할 명령어의 주소를 가리킨다. 명령어 포인터라고도 한다. 어셈블리어 01번째에서 02번째로 가기 위해서 PC가 02를 가리켜야한다.

명령어 레지스터(IR) : 현재 실행중인 명령어를 저장한다. 제어장치는 명령어 레지스터에 있는 명령어를 해석한 후 제어신호를 보낸다. ex) LOAD, ADD, MOVE …

메모리 주소 레지스터(MAR) : 메모리에서 데이터를 가져오거나 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용

메모리 버퍼 레지스터(MBR) : 메모리로부터 가지고 온 데이터나 메모리로 옮겨갈 데이터를 임시 저장

프로그램 상태 레지스터(PSR ) : 연산결과(양수, 음수 ,0이 아닌지 , 자리 올림 유무 등)을 저장

버스의 종류

버스는 CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다. 버스에서는 다음 작업을 지시하는 제어신호, 메모리 위치 정보 알려주는 주소, 처리할 데이터가 오고 가며 각각 제어버스, 주소버스 ,데이터 버스에 실린다.

제어 버스 : 제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어 신호를 보내기 위해 사용한다. 마찬가지로 메모리와 주변장치도 작업 완료되거나 오류 발생시에 CPU에게 보내기 위해 양방향이다.

주소 버스 : 메모리 주소 레지스터와 연결된 버스로, 메모리나 주변장치에 데이터를 읽거나 쓸 때 위치 정보를 보내기 위해 사용하며 단방향이다. ( 메모리 주소를 확인하는 용도 )

데이터 버스 : 메모리 버퍼 레지스터와 연결된 버스로, 데이터 이동이 양방향으로 이뤄진다.

– 추가로 궁금한 점이나 수정할 부분 있으면 댓글로 남겨주세요.

반응형

폰 노이만 병목 현상(Von Neumann bottleneck)과 메모리 누수(Memory Leak) 현상에 대해

이전 포스팅에서 오류률을 최소화하기 위해서 역전파를 구현해 수직, 나선 분포 데이터의 테스트 까지 완료하였다. 물론 여기서 끊을 수도 있겠지만, 좀 더 욕심을 내서 모듈화(객체화)까지 완성해보자. 현재 코드의 가장 큰 문제점은 하드 코딩으로 레이어와 활성화 함수를 고정 시켰다는 점에 있다. 좋은 코드가 되기 위해서는 레이어의 선택과 활성화 함수 선택까지 할 수 있어야 하며 코드 또한 간결할 필요가 있다. 이번에는 코드의 최적화를 하여, 레이어 생성 부터 시작해 최적화(역전파)를 비롯한 전체 과정을 객체로 불러올 수 있게 최적화 해보자. 이것으로 꽤 나 길었던 포스팅이 끝이 날 것이다. 레이어의 모듈화 이번 모듈화는 따로 소스 파일 까지 분리 하였다. 먼저 레이어에 관련된 소스 코드의 모듈화다. 1 2 3 4 5 6 7 8 9 10 #layer.py class Layer: def __init__( self ): pass def forward( self ): pass def backward( self ): pass cs 이 파일은 단순히 상속하기 위한 코드이다. 대부분 파일에서 사용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #layer_dense.py from layer import Layer import numpy as np class Layer_Dense(Layer): def __init__( self , n_inputs, n_neurons): #randn : 0으로 중심으로한 가우스 분포를 무작위 생성 #실제 randn 함수는 1을 초과한 값을 출력하기 때문에 0.10을 곱함 self .weights = 0. 10 * np.random.randn(n_

키워드에 대한 정보 폰 노이만 구조

다음은 Bing에서 폰 노이만 구조 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

완전 #쉽게 #설명해도 #될까요? #컴퓨터 #구조 #운영체제


YouTube에서 폰 노이만 구조 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 완전 쉽게 설명해도 될까요? 컴퓨터 구조 운영체제 | 폰 노이만 구조, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  홍상수 부인 얼굴 | 김민희 홍상수 커플 최근 근황|고현정의 충격적인 폭로 20718 좋은 평가 이 답변

Leave a Comment