본문 바로가기
학교 강의/컴퓨터구조

컴구 총정리

by hoshi03 2024. 6. 20.

클럭 속도가 높을 수록 CPU 성능 상승 

hz - 1초에 클럭이 반복되는 횟수

cpu 속도를 높이기 위해서 클럭을 계속 올리면 발열이 발생, 스레드나 코어의 수를 늘리자

 

코어 : 명령어를 실행하는 부품, cpu내에 여러 개의 코어가 잇을 수 있음

멀티코어 CPU - 코어 여러개 cpu, 단일 코어보다 연산이 빠르지만 코어 갯수랑 연산속도가 정비례x

 

• 스레드

사전적 의미 : 실행 흐름 단위

-hw 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위, cpu에서 사용

1코어 1스레드 -> 명령어 실행하는 부품 하나가 한번에 한개의  명령어 처리

2코어 4스레드 -> 명령어 실행하는 부품 2개가 한번에 4개의 명령어 처리

sw 스레드 : 하나의 프로그램에서의 독립적인 실행 단위, 1코어 1스레드 cpu도 여러 sw 스레드 생성가능

멀티스레드 프로세서 : 하나의 코어로 여러 명령어를 동시에 처리

멀티 스레드 프로세서에서 하나의 명령어를 실행하기 위해 필요한 레지스터들을 레지스터 세트라 한다

레지스터 세트가 n개면 n개의 명령어를 처리하기 위한 정보를 기억한다

ALU,제어장치가 두개의 레지스터 세트에 저장된 명령어를 해석,실행하면 하나의 코어에서 두개의 명령어가 동시 실행

하이퍼스레딩 : 인텔의 멀티스레드 기술

 

메모리 입장에서는 2코어 4스레드는 한번에 명령어 4개를 처리 가능하다. -> cpu(논리 프로세서)가 4개로 보인다

 

• 명령어 병렬 처리 기법 3가지 파이프라인, 슈퍼스칼라, 비순차적 명령어 처리

- 명령어 처리 과정 4가지 인출 해석 실행 저장

4가지 과정이 안겹치면 동시에 각 단계를 실행할 수 있다 

 

명령어 병렬 처리 1. 명령어 파이프라인 - 각 단계가 겹치지 않으면 각각 동시에 실행하기

파이프라인 위험 3가지 

- 데이터 위험 : 이전 명령어를 끝까지 실행해야햐만 다음 명령어를 실행할수 있는 경우

명령어를  동시에 실행하면 명령어 간 데이터 의존성 때문에 데이터 위험이 발생할 수 있다

- 제어 위험 : 분기 등으로 pc가 갑작스럽게 변화, 미리 가져온 명령어들은 쓸모가 없어짐

- 구조적 위험(자원 위험) : 명령어를 겹쳐서 실행할때 서로 다른 명령어가 ALU, 레지스터 등 같은 CPU 부분을 사용하려 하는 경우

 

명령어 병렬처리 2. 슈퍼스칼라 - cpu 내부에 여러 개의 명령어 파이프라인을 포함하는 구조

이론적으로는 파이프라인 갯수와 처리 속도가 비례하지만, 파이프라인 위험도 증가로 인해 처리 속도 증가 x

 

 

 

명령어 병렬처리 3. 비순차적 명령어 처리

순서가 바꿔 실행해도 되는 명령어는 먼저 실행해서 명령어 파이프라인이 멈추는 것을 방지

3번 명령어는 M101이 끝나야 인출 가능해서 그 사이에 파이프라인이 멈추는 순서를 바꾼다

 

명령어 병렬 처리 기법 요약

 

명령어 파이프라이닝 <- 동시에 여러 개의 명령어를 겹쳐 실행하는 기법

- 데이터 위험, 제어 위험, 구조적 위험


슈퍼스칼라 <- 여러 개의 명령어 파이프라인을 두는 기법

- 파이프라인 위험도 증가로 효율 낮음


비순차적 명령어 처리 기법 <- 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 기법

유도리있게 순서 교환

 

• 명령어 집합(ISA) : CPU가 이해할 수 있는 명령어들의 모음

ISA가 같은 cpu끼리는 서로의 명령어를 이해 가능

 

• CISC/RISC

CISC - 복잡한 명령어 집합, 적은 명령어 수, 가변 길이

장점 : 적은 수의 명령어로 프로그램 실행, 메모리 절약

단점 : 명령어 크기와 실행되기까지 시간이 일정하지 않음, 명령어 하나 실행에 여러 클럭주기, 파이프라이닝 불리, 사용빈도 문제

 

RISC - 짧은 고정길이 명령어, 파이프파이닝 유리, 레저스터 활용

단점 : 프로그램 동작에 더 많은 명령어 필요

• 기억장치 성능 평가 요소

기억 용량 : 기억용량 단위는 비트가 기본, 바이트, 워드 등이 있음

접근시간 : 기억장치에서 저장된 데이터를 읽거나 쓰는데 걸리는 시간,

읽기나 쓰기 명령을 내리고 실제로 출력하는데 걸리는 시간

사이클 시간 : 기억장치에서 기본 단위 정보를 읽고 기록하는데 걸리는 시간, 두번 접근 최소 시간

대역폭 : 한번에 전송할 수 있는 비트 수나 저장할 수 있는 비트 수

전송률 : 초당 몇 비트가 전송되서 읽혀지냐

 

• 기억장치 분류

 

- 데이터 저장 성질

휘발성 - ram

비휘발성 - rom/ cd-rom

 

-접근 방식

순차적 접근 - 데이터 저장 순서에 따라 순차적으로 접근: 자기 테이프

직접 접근 - 기억장소 근처로 가서 순사적 접근: 디스크

임의 접근 - 저장된 데이터 접근하는데 걸리는 시간이 항상 일정:  ram,rom

 

• 주기억장치 : cpu와 통신

실행할 프로그램과 데이터를 저장해뒀다가 cpu가 하나씩 제어장치로 꺼내서 해독, 제어신호를 만들어 각 장치로 전달

쓰기 동작 모드/ 읽기 동작 모드

 

인출 - 해독 - 실행 - 저장 4단계

 

• 주기억장치 기억소자

ram - 휘발성, cpu와 보조기억장치 처리속도차이를 극복하기 위해서 ram을 중간에 둬서 처리속도차를 극복

Dram - 싸다, 일반적인 ram에 사용

Sram - 비싸다, 플립플롭, 캐시 메모리에 사용

SDRAM - 클럭 신호 동기회된 디램

DDR SDRAM - SD램 대역폭 두배된 SDRAM

DDR2 SDRAM - SD램 대역폭 네베.. ddr3는 8배.. 아시죠?

 

 

칩 논리

- 8 x 8 -> 3개 주소입력, 입력 3개 받아서 8개로 디코드

- 16 x 4 -> 4개의 주소 입력, 입력 4개 받아서 16개로 디코드

 

램이 충분히 크면 보조기억장치에서 많은 데이터를 가져와 미리 ram에 저장해 보조기억장치에서 가져오는 수고를 덜 수 있음

 

 

rom - 읽기만 가능한 기억장치

mask rom - 한번만 기록

prom - 1회 새로운 내용으로 변경 가능

eprom - 필요할때마다 자외선을 이용해 데이터 삭제하고 새로 쓰기 가능

 

 

• 메모리 주소 공간

물리주소 : 정보가 실제로 저장된 hw 상의 주소

논리주소 : cpu나 프로그램 입장에서의 주소, 실행 중인 프로그램 각각 0번지부터 시작하는 주소

 

논리주소 물리주소 변환

- 베이스 레지스터 : 프로그램의 첫 물리주소를 저장

mmu가 cpu가 발생시킨 논리주소 + 베이스 레지스터로 논리주소를 물리주소로 변환

 

메모리 보호

- 한계 레지스터 : 논리주소의 최대 크기를 저장

접근하고자 하는 논리주소가 한계 레지스터(최대값) 보다 작은지 검사해서 독립적인 실행공간을 확보, 침범 못하게 보호

 

• 저장장치

데이터나 프로그램, 연산 결과 등을 일시적이나 영구저긍로 저장하는 장치

레지스터 : cpu내에 존재

캐시 : cpu와 주기억장치 속도 차이를 줄이기 위해 사용

주기억장치 : cpu가 데이터 읽어올수 잇는 장치

보조기억장치 : 주기억보다 느리지만 용량 큼

 

• 캐시메모리 동작

캐시 x : cpu가 주기억장치에 접근

 

캐시 O :  캐시에 cpu가 필요한 명령어나 데이터가 없으면 주기억장치에 접근해서 cpu 명령어 레지스터에 저장(미스)

있으면 가서 캐시에서 가져옴 (히트)

보통 캐시 히트 비율을 85~95

 

• 참조 지역성

cpu가 최근에 접근했던 메모리의 공간에 접근하려는 경향 -> 시간 지역성

접근한 메모리 공간 근처에 접근하려는 경향-> 공간 지역성

 

• 주기억장치와 캐시 사이에 정보 공유

주기억장치 데이터를 블록 단위로 캐시에 복사, cpu가 hit한 데이터를 워드 단위로 인출

 

• 사상(매핑) 개념

캐시메모리에서 인출이 실패하면 캐시의 일부를 주기억으로 옮기고 주기억에서 필요한 정보를 캐시에 기억하는것

 

-사상 방법 3가지 직접, 연관, 집합연관

 

직접 사상 : 주기억 장치의 블록이 캐시메모리의 특정 라인에만 저장되니 블록이 적재되는 라인만 검사

주기억장치 주소 형식

주기억장치의 주소 중 태그, 슬롯과 캐시의 슬롯,태그를 비교해서 동일하면 적중한다

슬롯이 같은데 태그가 다른 단어가 많으면 적중률이 상당히 떨어진다

 

예시. 블록의  단어  수는  1단어이고  CPU가  00001번지  단어를  필요로  하는  경우

태그는 앞2비트 00, 슬롯은 뒤 3비트 001

캐시가 실패하면 주기억 00001 번지에서 데이터를 가져다가 캐시 001 번지에 데이터와 태그 00을 저장

cpu에 데이터 전달

pdf 23~26에 더 자세한 예제

 

연관 사상 : 직접 사상을 보완해서 블록을 캐시의 어느 라인에든 보관 가능, 슬롯 필드가 없고 임의로 저장

 

태그 5비트, 단어 2비트 이지만 블록의 하나의 단어만 저장해서 단어비트가 모두 00

cpu가 캐시에 대해 일일이 검색을 해서 미스가 나면 주기억장치에서 데이터를 얻는다

 

집합 연관 사상

 

직접 사상을 보완해서 태그가 다른 단어 두개 이상을 보관

 

 

 

 

• 교체 알고리즘

직접 사상은 주기억장치 데이터가 캐시의 동일 슬롯에 저장되기에 교체 알고리즘이 필요 없지만

연관 사상과 집합 연관 사상은 필요

 

LRU - 인출 안한지 가장 오래된 블록 교체

LFU - 인출횟수 가장 적은 블록 교체

FIFO - 아시죠?

랜덤

 

• 보조기억장치

하드디스크 : 자기 디스크의 일종

하드디스크 구성

플래터 : 동그란 판, 실제 데이터 저장

스핀들 : 플래터를 회전시키는 요소

헤드 : 플래터에서 데이터를 읽고 쓰는 바늘같은 부품

디스크 암 : 헤드를 이동시키는 요소

 

• 하드디스크 저장 단위

트랙과 섹터 단위로 데이터 저장

트랙 : 플래터를 한장안에 있는 원 중 하나

섹터 : 트랙 중 한 조각, 하드 중 가장 작은 전송단위, 섹터를 묶어서 블록이라고도 한다

실린더 : 플래터 상에서 같은 트랙이 위치한 곳을 모아 둔 단위, 연속된 정보는 한 실린더에 기록

하드는 플래터 양면을 사용해서 위아래에 헤드가 있다 

 

• 하드 데이터 접근과정

탐색시간 : 데이터 저장된 트랙까지 헤드 이동시키는 시간

회전 지연 : 헤드가 있는 곳 까지 플래터를 회진시키는 시간

전송시간 : 하드와 컴퓨터 간 데이터 전송하는 시간

 

• 플래시 메모리

전기적으로 데이터 읽고 쓰는 반도체 기반 저장 장치

하드,롬,usb,sd,ssd 등의 저장장치가 플래시 메모리 기반

 

셀 : 플래시 메모리에서 데이터를 저장하는 가장 작은 단위

1셀 1비트 : SLC - 한셀로 정보 두개, 수명길고 가격이 높고 빠름, 고성능의 장치에 사용

1셀 2비트 : MLC- 한 셀로 정보 4개, slc보다 느리고 수명짧고 쌈, 대부분의 플래시 메모리 장치가 mlc타입

1셀 3비트 : TLC - 한셀로 정보 8개, mlc보다 느리고 싸고..

수정 잦거나 성능을 원하면 slc

싸고 용량큰거 : tlc

중간 mlc

 

 • 플래시 메모리 저장 단위

읽기/쓰기 : 페이지 단위

삭제 : 블록 단위

 

페이지 상태 3가지

free - 새 데이터 저장 가능

valid - 유효한 데이터 저장된 상태

invalid - 쓰레기값 저장 상태

 

플래시 메모리는 덮어쓰기가 불가능하여 valid 상태에서는 새 데이터를 저장할 수 없다

가비지 컬렉션 : 유효한 페이지만 복사하고 기존 블록 삭제해서 공간 정리

 

• RAID

 

하드나 스스디 여러개를 하나의 논리적 보조기억장치처럼 사용

 

RAID 0 : 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장

스트라이핑 : 데이터를 분산 저장

여러 개의 분산된 장치에서 동시에 데이터 읽기/쓰기 가 되서 속도가 올라가지만 정보 안전성은 떨어짐

 

RAID 1 : 미러링, 원본과 복사본 두군데에 데이터 쓰기

복구가 간단하나 사용 가능한 용량이 적어지고 비용 증가

 

RAID 4 : 1버전처럼 완전 복사하는대신 오류 검출/복구를 위한 패리티 비트를 저장하는 패리티 디스크를 만든다

그러나 패리티 디스크 병목이 있음

 

RAID 5 : 패리티 정보를 각각의 디스크에 분산해서 저장

 

RAID 6 : 서로 다른 두개의 패리티를 두는 방식으로 4,5 버전보다 느리지만 안전해짐

 

• 입출력 장치

CPU, 메모리와 입출력장치 사이의 데이터 전송률의 차이가 크다

-> 장치 컨트롤러를 통해 CPU와 입출력장치 간의 통신 중개, 오류 검출, 데이터 버퍼링

통신 중개 : 다양한 종류의 입출력장치의 정보 규격화

데이터 버퍼링 : 버퍼를 통해 전송률을 비슷하게 맞추는 방법

 

• 장치 컨트롤러

데이터 레지스터 : CPU와 입출력 사이의 데이터를 담는 버퍼

상태 레지스터 : 입출력장치 상태 저장

제어 레지스터 : 입출력장치가 수행할 내용 제어 정보와 명령을 저장

 

• 장치 드라이버 : 장치 깐트롤러의 동작 감지,제어 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받게 해줌

장치 컨트롤러 : 입출력장치를 연결하기 위한 하드웨어적인 통로 

장치 드라이버 : 입출력장치를 연결하기 위한 소프트웨어적인 통로

장치 드라이버를 인식하고 실행하는 건 운영체제가 한다

 

• 데이터 전송 종류

- 클락에 특성에 따른 분류 2가지

동기 전송 : 공통 클락을 이용한 전송, 컴퓨터 내부 동작은 클락에 의해 동기, 레지스터간의 전송은 동기전송

비동기 전송: 데이터 주고받는 장치가 자기 클락으로 전송, CPU와 입출력장치 간의 전송은 비동기 전송, 제어신호 를 교환해서 전송시간을 알림

 

-전송 회선에 따른 전송 

병렬 : 1워드 회선을 따라 워드를 동시에 전송, 짧은 거리 고속전송

직렬 : 한쌍의 선으로 한번에 1비트씩 전송, 느리지만 경제적임

 

• 비동기 병렬 전송

독립된 2개 이상의 입출력장치가 비동기적으로 데이터 전송, 데이터 전송을 알려야된다

- 스트로브 제어 방식

스트로브 : 유효한 데이터가 버스에 있음을 알리는 신호, 송신장치나 수신장치가 발생시킴

데이터 버스 외에 추가적인 회선을 설치해서 신호 전달

마이크로프로세서와 기억장치의 정보 교환 시 사용

 

 

- 핸드세이킹 제어 방식

송수신 양쪽에서 제어 신호, 송신과 수신은 별도 회선으로 간다

시간도에서 데이터 전송 시작시 주기억장치가 송신 신호 보내고 출력장치는 송신신호 확인하고 데이터 수신

수신이 완려되면 출력장치가 주기억장치에 수신 신호 보내서 수신 완료된 걸 알림

송수신 동시 동작, 신뢰성 높음

하나의 송신장치에서 여럭 개의 수신장치에 데이터 전송 가능

 

 

 

목적지 개시 절차 : 수신 측이 데이터 전송을 먼저 요구하는 것

수신 측 출력장치가 RD 신호를 송신에 전달

CPU는 송신 신호 DV를 전달

DV를 수신하고 데이터를 수신한 출력장치가 RD 제거

CPU가 DV 제거하고 초기상태

 

• CPU와 데이터 입출력 방식 3가지 프로그램 , 인터럽트, DMA

 

• 프로그램 입출력 - 프로그램 명령어로 입출력장치 제어, 프로그램 수행 중 입출력 명령을 만나면

장치 컨트롤러와 상호작용해서 입출력 수행

예시 메모리 정보를 하드에 백업할때

1. cpu가 하드 디스크 컨트롤러 제어 레지스터에 쓰기 명령

2. 하드 디스크 컨트롤러가 하드 상태를 확인해서 준비된 상태면 상태 레지스터에 준비됐다고 표시

3. cpu는 상태 레지스터를 주기적으로 확인하면서 준비됐는지 확인, 준비됐음을 알게 되면 백업할 정보를 데이터 레지스터 에 쓰는 과정

 

입출력  명령들(I/O Command)
      프로그램  입출력  방식에서  사용하는  입출력  명령들
      제어  (Control) : 주변장치를  활성화시키고  무엇을  해야  하는  지  알리는  데 사용
      검사(Test) : 장치  컨트롤러와  주변장치들의  상태를  검사하는  사용된다. 입출력  동작의  완료  여부와  오류  발생  여부  등을  검사한다.
      읽기(Read) : 장치  컨트롤러가  주변장치에서  데이터를  읽고  데이터 레지스터에  저장한다.
      쓰기(Write) : 장치  컨트롤러가  데이터  버스에서  데이터를  받아  주변장치로 보낸다.

 

• 인터럽트 기반 입출력

hw 인터럽트는 장치 컨트롤러가 발생시킨다

여러 입출력 장치에서 인터럽트가 발생하면 우선순위 순으로 처리한다

 

프로그램  입출력, 인터럽트  기반  입출력의  공통점?
   입출력  장치  와  메모리  간의  데이터  이동은  CPU가  주도하고 이동하는  데이터도  반드시  CPU를  거친다.
   입출력  장치의  데이터를  메모리에  저장하는  경우

   메모리의  데이터를  입출력에  저장하는  경우

 

  그러나 입출력장치와  메모리  사이에  전송되는  모든  데이터가  반드시  CPU를 거쳐야  한다면  입출력장치를  위한  연산  때문에  시간을  뺏기게  됨.
   하드  디스크  백업과  같이  대용량  데이터를  옮길  때  CPU의  부담은  더욱 증가

 

• DMA 입출력 

입출력장치와 메모리가 CPU를 거치지 않고 상호작용, DMA 입출력을 위해 DMA 컨트롤러가 필요하다

 

1.CPU는 DMA 컨트롤러에 입출력 작업을 명령

2.  DMA컨트롤러는  CPU 대신  장치  컨트롤러와  상호작용하며  입출력 작업을  수행

3.  입출력  작업이  끝나면  DMA 컨트롤러는  인터럽트를  통해  CPU에  작업이 끝났음을  알림

CPU는  입출력  작업의  시작과  끝만  관여

 

DMA 과정에서 사용하는 시스템 버스는 공용자원이기에 동시에 사용이 불가능하다

CPU나 DMA가 동시에 시스템 버스를 사용할 수는 없다

 

DMA 컨트롤러는
1.  CPU가  시스템  버스를  이용하지  않을  때마다  조금씩  시스템  버스를 이용.
2.  CPU가  일시적으로  시스템  버스를  이용하지  않도록  허락을  구하고 시스템  버스를  이용(Cycle Stealing)

 

DMA를  위해  시스템  버스를  너무  자주  사용하면  그만큼  CPU가  시스템 버스를  이용하지  못한다.

입출력  버스 - DMA 컨트롤러와  장치  컨트롤러  사이에  입출력  버스라는  별도의  버스에 연결하여  문제  해결

• 입출력 프로세서(IOP) 또는 입출력 채널(I/O Channel)

최근에는 입출력  명령어를  직접 인출하고  해석하고  실행까지  하는  일종의  입출력  전용  CPU가 등장

 

• 시스템 버스

버스 : 컴퓨터  내부의  회로에서  중앙처리장치와  주기억장치  그리고  외부의 입출력장치  간에  정보를  전송하기  위해  공용으로  사용하는  전기적  통로

 

버스 3가지

 

데이터  버스(Data Bus)
      컴퓨터  시스템을  구성하는  장치들  사이에 데이터를  전송할  때  사용되는  선들의  집합
      양방향  전송이  가능
      데이터  버스의  폭  : 중앙처리장치와  주기억장치 사이에  한  번에  전송되는  비트수로  결정
      데이터  버스  비트  수  = 레지스터  크기  = 단어 크기  (Word size)

 

주소  버스  (Address Bus)
      주소를  주고  받는  통로
      CPU가  주기억장치로  데이터의 쓰기(Write)동작을  하거나  CPU가
주기억장치에서  데이터의  읽기(Read) 동작을  할 때, 해당하는  주기억장치  장소를  지정하는 주소를  전송하기  위한  선들의  집합
      단방향  전송  : CPU에서  주기억장치  및  입출력 모듈로만  전송  가능

주소 버스 비트 수 : 16비트면 2^16

 

제어버스 : CPU와 주기억이나 입출력 사이에서 제어신호 전달하는 선

 

제어 신호 종류

 

메모리와  관련된  제어  신호
      기억장치  쓰기(memory write) 신호  : 버스에  적재된  데이터를  주소가 지정하는  기억장치의  장소에  저장되도록  한다.
      기억장치  읽기(memory read) 신호  : 주소가  지정하는  기억장치  장소의 내용을  읽어서  버스에  적재한다.

 

입출력장치와  관련된  제어  신호
      입출력  쓰기(I/O write) 신호  : 버스에  적재된  데이터를  지정된  입출력장치로 출력되게  한다.
      입출력  읽기(I/O read) 신호  : 지정된  입출력장치에서  데이터를  읽어서  데이터 버스에  적재하게  한다.
      전송  확인(transfer acknowledge) 신호  : 데이터  전송  동작이  완료되었음을 알려  준다.
      버스  요구(bus request) 신호  : 버스  사용을  요청
      버스  승인(bus grant) 신호  : 버스의  사용을  허가
      버스  사용  중(bus busy) 신호  : 현재  버스가  사용중임을  알려  준다

 

입출력장치와  관련된  제어  신호
      인터럽트  요구(interrupt request) 신호  : 입출력장치가  인터럽트를  CPU로 요구했음을  알린다.
      인터럽트  확인(interrupt acknowledge) 신호  : CPU 인터럽트  요구를 인식했음을  알린다.
   그  밖의  제어  신호
      버스  클록  (bus clock) : 동기식  버스에서  버스  동작들의  시작  시각을 일치시키기  위해  제공된다.
      리셋  (reset) 신호  : 컴퓨터  시스템의  모든  요소의  동작을  초기화  시킨다.

 

버스  계층  구조
   단일  버스  구조
      하나의  시스템  버스에  컴퓨터  구성  장치들이  연결되는  가장  간단한  구조
      장치가  버스에  연결될수록  버스의  사용을  조정하거나  중재하는  시간이 길어져서  전파지연이  증가
      CPU가  다른  장치로  데이터를  요청하는  것이  주된  버스의  동작이므로  병목 현상이  발생

 

2계층  다중  버스  구조
      전파  지연과  병목  현상이  발생하는  단일  버스의  문제점을  해결하기  위해 설계된  버스
      여러  버스를  사용하는  계층적  구조

      CPU와  주변장치  간의  통신은  시스템  버스를  경유할  확률이  적다.
      CPU와  주기억장치  접근도  일부는  캐시기억장치에서  바로  처리되므로 시스템  버스를  경유하지  않는다.
      따라서  CPU와  주기억장치  간에  데이터를  송신하는  경우와  주변장치와 주기억장치가  직접적으로  데이터를  송신하는  경우에만  시스템  버스를  사용.

 

3계층  다중  버스  구조
      연결된  주변  장치들의  특징을  세분화하여, 시스템  버스와  확장  버스  이외에 고속  버스를  추가한  고성능  계층  버스  조직
      외부  연결  장치에  요구되는  데이터  전송  속도에  따라  고속버스와  확장  버스로 분류한다.

      확장  버스와  고속  버스, 시스템  버스는  CPU간의  데이터  전달과  수신에  전혀 관여하지  않는다.
      시스템  버스는  주기억장치를  액세스  하는  경우만  사용

 

• 제어장치

   주기억장치에  저장된  명령을  해독하고, 해독한  명령이  지시하는  연산이 수행되도록  해당  장치에  제어신호를  전달한다.
   제어장치의  동작을  이해하면  어떤  과정을  통해서  명령어가  처리되는지 알  수  있고  결과적으로  컴퓨터의  동작을  이해할  수  있다.

 

제어장치의  구성
   명령어가  저장된  기억장치에서  명령어를  인출하기  위한  레지스터:
      기억장치  버퍼  레지스터
      기억장치  주소  레지스터
      명령  레지스터
   명령어  해독기
   명령어의  순서를  제어하기  위한 레지스터  : 프로그램  카운터

 

   작동순서
1.     프로그램  카운터를  통해  다음  명령어를  결정
2.     주기억장치에서  명령어를  인출
3.     기억장치  버퍼  레지스터와  명령  레지스터에  임시  저장
4.     명령어  해독기에서  명령어  해독
5.     해독된  내용들을  연산장치로  전달

 

   명령어  사이클  : 두  단계를  하나의  사이클로  묶어서  수행
      명령어  인출  단계  : 명령어  인출  사이클(Fetch cycle)
      명령어  실행  단계  : 명령어  실행  사이클(Execute cycle)

 


   명령어  인출
      해독할  명령을  주기억장치에서  제어장치로  읽어오는  과정

      명령어  인출  과정


» ①, ② 단계 : 주기억장치가 인출할 명령어의 주소가 적재되어 있는 프로그램 카운터에서 지정된 명령어를 인출, 프로그램 카운터는 다음에 인출할 명령이 기억된 위치를 지적하도록 증가한다.
»  ③ 단계 와 같이 기억장치 버퍼 레지스터에 저장된 명령은 ④ 단계를 통해서 명령코드와 주소 부가 분리된다
»  ⑤ 단계 : 명령 코드 부의 내용 중 명령 코드는 명령 레지스터로, 명령어 형식은 형식 레지스터로 각각 옮겨진다.

 

 

 

 

   명령어 실행
      명령어 인출이 완료되면 명령어 실행 사이클이 시작된다.
      명령어 실행 단계에서는 이미 명령 코드가 명령 레지스터에 저장되어 있다.
         명령어 실행 과정
≫   ① 단계 : 기억장치 버퍼 레지스터에 저장된 연산될 데이터의 주소가 기억장치 주소 레지스터에 옮겨진다.
≫ ② 단계 : 기억장치 주소 해독기에 의해 그 위치가 기억된 데이터가 지적된다.
≫   ③ 단계 : 연산될 데이터는 기억장치 버퍼 레지스터로 옮겨진다.
≫   ④ 단계 : 명령어 레지스터에 저장된 명령 코드는 명령 해독기에서 해독되어 누산기에 기억된 피연산 데이터와 연산 데이터인 기억장치 버퍼 레지스터의 내용을 가산기로 보내 연산되도록 한다.
≫ ⑤ 단계 : 마지막으로 연산된 결과는 누산기에 옮겨지고 저장되어 하나의 명령 실행이 종료된다

 

마이크로  연산
   사이클의  각  단계에서  실제  수행되는  가장  기본  단위

대문자  또는  대문자와  숫자가  함께  표현된  경우  : 레지스터를  문자 기호로  나타낸  것이다. 예에서  R은  R 레지스터를  나타내고  MAR은 기억장치  주소  레지스터를  나타낸다. 그리고  R2는  두  번째  레지스터라는 의미로  표현된  것

 

마이크로  연산의  형식
   레지스터를  표현하는  문자  기호의  아래첨자  : 레지스터내의  비트  위치를 나타낸다. 예) 𝑅1 : R 레지스터의  1번째  비트  , 𝐵2 : B레지스터의  2번째 비트
   괄호  : 레지스터  내의  위치를  나타낸  것으로  기억장치에서는  주소가 지정하는  기억장치  위치를  나타내는  용도로  많이  사용된다. 예)I(1~5) : I 레지스터의  1~5번  위치의  데이터, M(MAR) : MAR에  저장된  번지의 기억장치의  위치
   화살표  : 정보가  전달되는  것을  나타낸  것. 예) R ← B : B 레지스터의 데이터를 R 레지스터로 이동
   콜론  : 제어를  수행하는  기능을  표시. 예) P:R ←B : 제어기능 P에 의해 B레지스터 데이터가 R 레지스터로 이동
   쉼표 : 두 개 이상의 마이크로 연산을 구분 하는데 사용

 

명령어  사이클의  마이크로  연산
   현재  CPU가  무엇을  하고  있는  가에  따라..
      인출상태(Fetch, 사이클  제어  코드  : 00)
      간접상태  (Indirect, 사이클  제어  코드  : 01)
      실행상태(Execute, 사이클  제어  코드  : 10)
      인터럽트  상태(Interrupt, 사이클  제어  코드  : 11)

 

 

 

   인출  단계(Fetch Cycle)
      명령어를  주기억장치에서  CPU의  명령  레지스터로  가져와  해동하는  단계
      읽어와  해석된  명령어가  1Cycle 명령이면  이를  수행한  후  다시  Fetch Cycle로 변천한다.
      1 Cycle 명령이  아니면, 해석된  명령어의  모드  비트에  따라  직접주소와 간접주소를  판단한다.
» 모드 비트가 0이면 직접주소이므로 Execute 단계로 변천 » 모드 비트가 1이면 간접주소이므로 Indirect 단계로 변천

 

 

      인출  단계의  동작  순서

 

   간접  단계(Indirect Cycle)
      Fetch 단계에서  해석된  명령의  주소부가  간접주소인  경우  수행된다.
      이  사이클에서는  Fetch 단계에서  해석한  주소를  읽어온  후  그  주소가 간접주소이며  유효주소를  계산하기  위해  다시  Indirect 단계를  수행한다.
      간접주소가  아닌  경우에는  명령어에  따라서  Execute 단계  또는  Fetch 단계로 이동할지를  판단한다.
»  분기  같은  1 Cycle명령이면  Fetch Cycle 로  변헌 »  실행  명령이면  Execute Cycle로  변천


      간접  단계의  동작  순서

 

   실행  단계(Execute Cycle)
      Fetch 단계에서  인출하여  해석한  명령을  실행하는  단계
      Execute 단계에서는  플래그  레지스터의  상태  변화를  검사하여  Interrupt 단계로  변천할  것인지를  판단한다.
      Execute 단계에서는  Interrupt 요청  신호를  나타내는  플래그  레지스터의 변화가  없으면  Fetch 단계로  변천한다.
      ADD 연산을  수행하는  Execute 단계

 

   인터럽트  단계(Interrupt Cycle)
      인터럽트  발생  시  복귀주소(PC)를  저장시키고, 제어  순서를  인터럽트  처리 프로그램의  첫  번째  명령으로  옮기는  단계
      인터럽트  단계를  마친  후에는  항상  Fetch 단계로  변천
      Interrupt Cycle 의  동작  순서

'학교 강의 > 컴퓨터구조' 카테고리의 다른 글

컴구 중간 요약정리  (0) 2024.04.26
컴구 7주차  (0) 2024.04.19
컴구 퀴즈 대비  (0) 2024.04.11
컴구5주차  (0) 2024.04.05
컴퓨터구조 4주차  (0) 2024.03.30