컴퓨터 구조

문딤·2022년 8월 5일
0

◻ 고대의 구조

배전반의 연결을 통해 연산을 수행했다.
다른 연산을 수행하고 싶다면, 배선을 다 들어내고 직접 전선의 위치를 바꿔가며 프로그램을 수행해야 하는 번거로움과 시간이 많이 소요되었다.

이후 "EDVAC의 보고서 최초 초안"에서 기반한 컴퓨터 아키텍쳐가 등장한다.

◻ 폰노이만 구조 vs 하버드 구조

폰 노이만 구조

폰 노이만 구조의 특징

1. STORED PROGRAM (내장 방식 컴퓨터)

명령어와 데이터로 이루어진 구조,
컴퓨터 상에서 실행되기 위해서는 메모리에 프로그램이 저장되어 있어야한다.

메모리 안의 프로그램과 데이터를 CPU에 전달하여 계산을 처리하는 방식이다.

H/W는 그대로 두고 S/W를 바꿈으로서 편의성과 범용성이 향상되었다.

2. SEQUENTIAL INSTRUCTION PROCESSING.

'폰 노이만 구조'는
내장 메모리 순차처리 방식이므로 cpu는 순차적으로 한 번에 명령어 하나씩 실행한다.

CPU의 명령어 처리방식
1. 메모리로부터 명령을 가져온다.(fetch)
2. 명령어의 의미를 해석한다.(decode)
3. 명령어를 실행한다.(excute)
4. 결과를 저장한다.(stored)

폰 노이만 구조의 단점

🔘 병목 현상

메모리에서 cpu까지 데이터가 도달하지 않았는데,
cpu는 이미 그전에 전달받은 명령을 처리하기 위해 대기하는 상태

💨 현재 이 구조를 개선하기위해 메모리(RAM, Cache)등에 데이터를 띄어놓는 것으로 개선.

하버드 구조

병목현상을 해결하기위한 구조 아키텍쳐중 하나

cpu가 명령어와 데이터를 동시에 사용할 수 있도록 명령용 버스와 데이터용 버스를 물리적으로 구분함.

💨 현재 명령의 처리를 끝내는 동시에 다음 명령을 읽어들일수 있는 구조로 개선.

⭕ 장점

프로그램의 명령어와 데이터를 동시에 접근할 수 있도록 지원함으로서 엑세스 속도를 개선했다.

❌ 단점

버스의 갯수가 증가하므로, 설계가 복잡하다.

현재
cpu의 외부적으로는 폰 노이만 구조, 내부적으로는 하버드 구조를 적용.

◻ 컴퓨터구조의 핵심: CPU,MEMORY,IO,BUS

(1) CPU 중앙처리장치

메모리에 저장된 명령어를 읽어들여 수행하는 주체
명령어 CYCLE을 반복해서 프로그램을 실행
컴퓨터의 두뇌
제어장치, 산술논리연산장치, 기억장치등의 구성.

제어장치

내부에서 일어나는 작업을 통제하고 관리
순차적으로 명령어 인출
명령어를 해석
제어신호를 전달

산술논리연산장치(ALU)

구조 = 레지스터 부분 + 내부 장치 부분

덧셈을 위한 가산기를 중심으로 연산에 사용되는 데이터와 연산결과 등을
임시적으로 기억하기 위한 레지스터, 보수를 만드는 보수기, 오버플로우검출기 등으로 구성된다.

산술 논리 연산 장치는 가감승제와 같은 산술 연산과 두 수의 크기를 비교하고 판단하는 논리 연산을 담당하는 장치이다.
산술 연산에는 사무 계산에 많이 사용되는 10진수 연산과 과학 기술 계산에 많이 사용되는 고정 소수점 연산 및 부동 소수점 연산 등이 있다.
그리고 논리 연산에는 논리적 명령의 처리 즉 로드(load), 스토어(store), 시프트(shift), 비교 및 분기, 편집 (edit), 변환(conversion) 등이 있다.

레지스터

„ CPU와 속도가 비슷한 고속의 기억장치

„ 명령어 주소, 명령어 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장합니다.

„ 용도에 따라 범용 레지스터와 특수 목적 레지스터로 구분된다.

„ CPU의 종류에 따라 사용할 수 있는 레지스터의 개수와 크기가 다르다.

범용레지스터: 연산에 필요한 데이터나 연산 결과를 임시로 저장한다.
특수목적레지스터: 특별한 용도나 기능에 따라 구분되는 레지스터

특수 목적 레지스터

  1. 메모리 주소 레지스터(MAR) :
    읽기와 쓰기 연산을 수행할 주기억장치의 주소를 저장합니다.
  2. 프로그램 카운터(PC) :
    다음에 수행할 명령어의 주소를 저장합니다.
  3. 명령어 레지스터(IR) :
    현재 실행 중인 명령어를 저장합니다.
  4. 메모리 버퍼 레지스터(MBR) :
    주기억자치에서 읽어온 데이터나 주기억장치에 저장할 데이터를 임시로 저장합니다.
  5. 누산기(AC) :
    연산 결과를 임시로 저장합니다.

CPU 동작과정

  1. 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
  2. 중앙처리장치는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
  3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 내보낸다.
  4. 제어장치는 1 ~ 3 과정에서 명령어가 순서대로 실행될 수 있도록 각 장치를 제어한다.

(2) MEMORY 기억장치

주 기억장치(main memory)

컴퓨터 시스템에서 수행되는 프로그램과 수행에 필요한 데이터를 기억하고
CPU에 접근하는 속도가 빠르며 많은 양의 데이터를 기억한다.
RAM을 사용함.

보조기억장치 (secondary memory)

외부 기억장치라고도 한다.
반영구적으로 데이터를 저장한다.
보조기억장치에 저장된 데이터는 중앙처리장치와 직접 정보를 교환할 수 없기 때문에 주기억장치로 옮긴 후 처리헌다.
주기억장치에 비해 저렴하다.
속도가 빠른 중앙처리장치와 직접적인 데이터 교환이 불가능하다.
자기 테이프, 자기 디스크, 자기 드럼, 하드 디스크, 플로피 디스크

(3) IO DEVICE 입,출력장치

입출력 장치의 예시

입력장치

„ 타이핑(typing): 키보드
„ 포인팅(pointing): 마우스
„ 스캐닝(scanning): 스캐너
„ 레이저 광선을 이용하여 문서, 기호, 사진 등의 인쇄물을 직접
읽어 들임
„ Barcode reader, handheld/flatbed scanner
„ 단말기(terminal)
„ 입력 장치 + 화면 + 대형 컴퓨터와의 연결 장치

출력장치

ex ) 모니터, 프린터, 스피커

(4) BUS 시스템버스

CPU가 처리한 데이터들은 모니터에 출력되거나 메모리에 저장된다.
이를 위해 각 컴포넌트끼리 통신이 가능해야한다.

💨이러한 통신을 가능케 해주는 게 시스템 버스이다.

기본동작

쓰기 동작 과정:
버스 사용권을 획득, 주소와 데이터 및 쓰기 신호를 전송.
읽기 동작 과정:
버스 사용권을 획득, 주소와 읽기 신호를 보내고 데이터가 전송되어 올때까지 대기

데이터 버스

CPU와 기타 장치 사이에서 데이터를 전달하는 통로.

기억장치와 I/O 장치의 명령어와 데이터를 CPU로 보내거나
연산 결과를 기억장치와 I/O로 보낸다.
데이터 버스의 크기는 CPU가 한 번에 전송 가능한 데이터의 크기와 같다.
데이터를 주고 받아야 하기 때문에 양방향 버스이다.

주소 버스

CPU가 주기억 장치나 I/O 장치로 기억장치 주소를 전달하는 통로.

데이터를 정확하게 전달하기 위해서는 주소를 정해줘야 한다. 주소 버스는 주소를 전달만 하기 때문에 단방향 버스이다.

ex)
주소 버스의 비트 수는 기억장치의 주소 수를 결정.
2^8 = 256개
2^16 = 65,536개

제어 버스

데이터 버스와 주소 버스를 제어하기 위해 제어 신호들을 전송하는 통로

기억장치 쓰기 신호 : 버스에 실린 데이터를 주소가 지정하는 기억장소에 저장 되도록 하는 제어 신호
기억장치 읽기 신호 : 주소가 지정하는 기억장소의 내용을 읽어서 버스에 실리게 하는 제어 신호
I/O 쓰기 신호 : 버스에 실린 데이터를 지정된 I/O 장치로 출력되게 하는 제어 신호
I/O 읽기 신호 : 지정된 I/O 장치로부터 데이터를 읽어서 데이터 버스에 실리게 하는 제어 신호

제어 버스는 읽기 동작과 쓰기 동작을 모두 수행하기 때문에 양방향 버스이다.

참고

https://velog.io/@fldfls/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B2%84%EC%8A%A4-System-Bus

https://dheldh77.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C

https://ndb796.tistory.com/7

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=sealriel&logNo=10110468141

profile
풀스택개발자가 될래요

0개의 댓글