본문 바로가기

전공/그 외

[컴퓨터 구조] 전공 필기 시험 정리

 ✔️레지스터

  1. PC : 다음에 수행할 명령어 주소
  2. IR : 명령어 저장
  3. MAR : 실행 데이터 주소 저장
  4. MBR : 메모리 버퍼
  5. ALU :  산술 논리 연산 장치

✔️기억장치

1. 주기억장치 : RAM

2. 보조기억장치 : 하드 디스크, USB, CD-ROM, 외장 하드

 

✔️캐시 기억 장치

1. 캐시 기억장치

- 중앙처리장치(CPU)에 명령어와 데이터를 빠르게 제공하기 위해 주기억장치에 저장되어 있는 명령어와 데이터 일부를  복사해서 임시로 저장하는 장치

- 주기억장치보다 명령어와 데이터를 저장하고 인출하는 속도가 빠름

- 빠르게 동작하는 중앙처리장치와 느리게 동작하는 주기억장치 사이에서 속도 차이를 줄여주는 완충제 역할을 하는 기억장치

- CPU는 주기억장치에 접근하기 전에 캐시 기억장치를 먼저 확인

 

2. 캐시 기억장치 유무에 따른 시스템 동작원리

 

 

3. 캐시기억장치의 적중률

 

Taverage : 주기억장치와 캐시기억장치에서 데이터를 인출하는데 소요되는 평균 기억장치 접근시간

Tmain :주기억장치 접근시간

Tcache :캐시기억장치 접근시간

Hhit_ratio : 적중률

 

Taverage = Hhit_ratio  * Tcache + (1-Hhit_ratio) * Tmain

 

 

4. 캐시 기억장치의 설계시 고려할 요소

- 캐시 기억장치의 크기

- 인출 방식

- 사상함수

- 교체 알고리즘

- 쓰기 정책

- 블록 크기

- 캐시 기억장치의 수

 

1) 캐시 기억장치의 크기

- 크기가 클 경우, 적중률이 높아지지만 평균 접근 시간이 증가

- 1K~128K word가 최적이라고 알려짐

 

2) 인출 방식

- 캐시 기억장치가 주기억장치에서 명령어와 데이터 블록을 인출하는 방식

 

① 요구인출(Demand Fetch) 방식

- CPU가 필요로 하는 정보만을 주기억장치에서 블록 단위로 인출하는 방식

 

② 선인출(Prefetch) 방식

- CPU가 필요로 하는 정보와 나중에 필요로 할 것이라 예측되는 정보를 미리 인출하는 방식

- 주기억장치에서 명령어나 데이터를 인출할 때 필요한 정보와 이웃한 위치의 정보들을 함께 인출하는 방식(현재 필요한 데이터에 근접한 데이터를 나중에 필요할 것이라고 예측한 것임)

 

 

3) 사상(mapping) 함수

- 사상(mapping) : 주기억장치와 캐시기억장치 사이에서 정보를 옮기는 것

▶주기억장치의 구조

- 워드(word) : 하나의 주소 번지에 저장되는 데이터의 단위

- 블록(block) : k개의 워드로 구성됨

 

▶캐시기억장치의 구조

- 슬롯(slot) : 데이터 블록이 저장되는 곳

- 태그(tag) : 슬롯에 적재된 데이터 블록을 구분해주는 정보

 

▶매핑 방법

① 직접 사상(direct mapping)

- 주기억장치의 데이터 블록 주소 = 캐시 기억장치 데이터 블록 슬롯번호(주소) + 데이터 블록 태그

- 장점 : 사상 과정이 간단함

- 단점 : 동일 슬롯 번호를 갖지만 태그가 다른 데이터 블록들에 대한 반복적인 접근은 적중률을 떨어뜨림

 

② 연관 사상

- 캐시 슬롯번호에 상관없이, 주기억장치의 데이터 블록을 캐시 기억장치의 임의의 위치에 저장하는 것

- 캐시기억장치에서 데이터 블록을 인출할 때 모든 슬롯에 대한 검색이 필요함

- 주기억장치 데이터 블록 주소 = 캐시기억장치 데이터 블록 태그

 출처 : 컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011

 

③ 집합 연관 사상

- 직접 사상과 연관 사상 방식을 합친 방식

- 캐시는 v개의 집합들로 나누어지고, 각 집합들은 k개의 슬롯들로 구성

- 직접 사상 방식에 의해, v개의 집합 중에서 하나의 집합을 선택

- 연관 사상 방식에 의해, 선택한 집합 내에 있는 k개의 슬롯 중에서 하나의 슬롯을 선택

- 주기억장치 데이터 블록 주소 = 캐시기억장치 데이터 블록 집합번호 + 데이터 블록 태그

 

 

4) 교체 알고리즘

- 캐시 실패(miss)일 때, 주기억장치에서 새로운 데이터 블록을 캐시 기억장치에 가져오기 위해 캐시 기억장치의 어떤 슬롯 데이터를 제거할지 결정하는 방식

- 직접 사상 : 교체 알고리즘이 필요 없음

- 연관 & 집합 연관 사상 : 교체 알고리즘이 필요함

 

5) 쓰기 정책

- CPU가 프로그램을 실행하다가 연산 결과를 캐시기억장치에 저장할 때, 캐시에 저장된 데이터를 주기억장치도 가져야 하기 때문에 주기억장치에 데이터를 갱신하는 방법을 쓰기 정책으로 결정

 

① 즉시 쓰기(Write-though) 방식

- CPU에서 생성되는 데이터 블록을 캐시기억장치, 주기억장치에 동시에 기록하는 것

- 장점 : 데이터의 일관성이 쉽게 보장된다

- 단점 : 매번 쓰기 동작을 할 때마다, 캐시기억장치와 주기억장치 간 접근이 빈번하게 일어나고 쓰기 시간이 길어짐

 

② 나중 쓰기(Write-back) 방식

- 캐시기억장치에 기록한 후, 기록된 블록에 대한 교체가 일어날 때, 주기억장치에 기록하는 것

- 장점 : 주기억장치에 기록하는 동작을 최소화할 수 있음

- 단점 : 캐시기억장치와 주기억장치의 데이터가 일치하지 않을 수 있음

 

6) 블록 크기

- 블록의 크기가 클수록 한번에 많은 정보를 읽어 올 수 있지만, 블록 인출 시간이 길어짐

- 블록이 커질수록 캐시 기억장치에 적재할 수 있는 블록의 수가 감소하기 때문에 블록이 더 자주 교체됨

 

7) 캐시의 수

- 캐시기억장치들을 계층적 구조나 기능적 구조로 설치함

- 가장 일반적인 구조는 한 개의 캐시기억장치를 사용하는 형태임

 

 

✔️멀티 프로세서 유형

  단일 데이터 복수 데이터
단일 명령어 SISD SIMD
복수 명령어 MISD MIMD

SISD (Single Instruction Single Data)

  • 단일명령 - 단일자료
  • 한 프로세서가 한번에 하나의 명령어를 처리할 때 하나의 메모리에 저장되어 있는 한 데이터를 이용하여 처리하는 것
  • 폰노이만 구조
  • 각 데이터를 처리하기 위해서 매번 명령어를 읽기때문에 효율이 떨어진다.
  • 파이프라이닝과 같이 동시처리를 함으로써 성능을 향상시키는 것이 일반적

 SIMD (Single Instruction Multi Data)

  • 단일명령 - 복수자료
  • 병렬 프로세서의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식
  • 벡터 프로세서
  • 비디오 게임 콘솔이나 그래픽 카드와 같은 멀티미디어 분야에 자주 사용

 MISD (Multi Instruction Single Data)

  • 복수명령-단일자료
  • 동일한 데이터로 처리하여 서로 다른 명령어로 실행하는 병렬 컴퓨팅 아키텍처를 일컫는 용어
  • 파이프라인 아키텍처
  • 처리 오류를 발견하고 막기 위해서 동일한 명령어를 중복해서 실행하는 무정지 컴퓨터도 이 부류에 속한다.
  • 많이 사용되는 아키텍처는 아니며 일반적으로 MIMD나 SIMD가 더 많이 사용된다.

 

MIMD (Multi Instruction Multi Data)

  • 복수명령-복수자료
  • 비동기적이면서 독립적으로 동작하는 여러 개의 프로세서가 있다.
  • 언제든지 각각의 다른 프로세서들은 각기 다른 데이터를 이용하는 각기 다른 여러 명령어들이 실행할 수 있다.
  • MIMD 기계는 공유 메모리이거나 분산 메모리이며, 이러한 분류는 어떻게 메모리를 이용하느냐에 따라 나뉜다.
  • 공유 메모리 기계는 버스기반, 확장 또는 계층적인 형태일 수 있다.
  • 분산 메모리 기계는 하이퍼큐브나 메시 상호연결 기법을 사용한다.

 

✔️조합 논리 회로

1. 조합 논리회로 (Combination logic cricuit)

 : 임의의 시점에서의 출력 값이 그 시점의 입력 값에 의해서만 결정되는 논리회로(내부 기억능력 즉, 메모리를 갖지 않음)

 : NOT, AND, OR, XOR, NOR, NAND, 반가산기, 전가산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등이 있음

 

 

2. 조합 논리회로를 설계할 때의 순서

 1) 입력과 출력 조건에 적합한 진리표를 작성

 2) 진리표를 가지고 카르노 도표를 작성

 3) 간소화된 논리식을 구함

 4) 논리식을 기본 게이트로 구성

 

3. 조합 논리 회로 종류

반가산기(half adder)

- 2개의 2진수 A와 B를 더하여 합(sum)과 캐리(carry)를 산출하기 위한 조합 논리회로

-  2개의 기본 논리회로를 사용
  1) 한 자리의 2진수 합을 나타내는 논리 함수 / S =  X (XOR) Y 
  2) 캐리를 나타내는 논리 함수  / C = X * Y

 

전가산기(full adder)

 - 여러 비트로 된 두 수를 더할 때 두 비트에서 더해진 결과인 캐리는 더 높은 자리의 두 비트의 덧셈에 추가하여 더해짐

- 아래 자릿수에서 발생한 캐리까지 포함하여 세 비트를 더하는 논리회로를 전가산기라 함

- 입력 비트 중 두 비트를 더하여지는 유효 비트와 아래 자릿수부로부터의 캐리 비트를 더함

 

2진 병렬 가산기

 - 2개의 n비트 2진수를 더하는 가산기

 크게 직렬과 병렬 방법으로 분류
  1) 직렬 방법
    - 전가산기 1개와 출력 캐리를 이용하는 방법으로 전가산기를 통해 덧셈이 이루어짐
    - 계산을 수행할 때 발생된 캐리는 다음에 더하는 두 수의 캐리로 입력되어 수행됨

  2) 병렬 방법
    - 전가산기를 연속적으로 연결하여 구성하는 방법
    - n-비트 병렬 가산기는 n개의 전가산기를 필요로 하며, 전가산기의 출력 캐리는 다음 자리의 입력 캐리가 됨
    ex) 2개의 4비트 2진수를 A(1010)와 B(0010)을 더하는 경우 합(S)는 1100이됨
    

 

반감산기(Half subtracter)

- 2진수 1자리의 두 개 비트를 빼서 그 차를 산출하는 회로

- 입력 변수 X와 Y의 차를 D(Difference), 빌려오는 수를 B(Borrow)라 함 

-  논리 게이트 회로: 하나의 inverter(NOT gate)와 하나의 반가산기로 구현할 수 있음 

  


▶  
전감산기(Full subtracter)

 : 입력 변수 3자리 뺄셈에서 차(D)와 빌려오는 수(B)를 구하는 것

  - 윗자리로부터 빌려온 값을 포함하여 세 비트의 뺄셈을 할 수 있는 회로를 의미

 

2진 곱셈

 : 2진수의 곱셈(승산)은 10진수와 같은 방법으로 수행

 : 승수의 최소 유효 비트(마지막 자리)부터 피승수를 곱하여 부분 곱(partial product)을 생성하고, 이들 부분 곱은 수행할 때 좌측으로 시프트되어 위치하게 되고, 이들을 합한 값이 최종 결과가 됨 

 

인코더

 : 주로 입력 신호를 컴퓨터 내부에서 사용하는 부호(코드)로 변경함

 : 2^n개의 입력선 중에서 하나가 선택되면 그에 따른 n개의 출력선으로 2진 정보가 출력되는 회로

 

디코더

 : 컴퓨터 내부의 부호(코드)를 일반적인 신호로 변경하여 출력

 : n비트의 2진 코드 입력에 의해 최대 2^n개의 출력이 나오므로 가능한 한 2진 입력의 조합만큼 출력을 가진다

 

멀티플렉서(MUX, Multiplexer)

 : n개의 선택선의 조합에 의해 선택된 2^n 개의 입력선 중에서 하나를 선택하여 출력선에 연결시켜 주는 회로 

 : 즉, n개의 입력 신호로부터 특정 조건에 의해 입력 신호를 한 개만 선택할 때 사용하는 것  

 

디멀티플렉서(DeMUX, Demultiplexer)

 : 1개의 입력선으로 받아들여 n개의 선택선의 조합에 의해 2^n개의 출력선 중에서 하나를 선택하여 출력하는 회로

 : 데이터 분배기(Data distributor)라고도 불린다

 : 즉, 1개의 입력을 갖고 4개의 출력물이있는데 S1과 S0에 의해서 그 중 하나만 선택해 출력하는 회로이다

 

 

멀티플렉서와 디멀티플렉서의 차이점

 : MUX는 4개의 입력선 중 S1,S0 선택자에 의해 1개를 선택해서 출력하는 것이고

 : DeMUX는 1개의 입력선이 S1,S0 선택자에 의해 4개의 출력선 중 1개를 선택해 출력하는 방식

 

 

✔️순서 논리회로

1. 순서논리회로

 외부로부터의 입력과 현재 상태에 따라 출력이 결정되는 논리회로

 

2. 순서논리회로의 종류

- 플립플롭, 레지스터, 카운터, RAM, CPU 등

 

플립플롭

- 전원이 공급되고 있는 한, 상태의 변화를 위한 신호를 발생할 때까지 현재의 상태를 유지

- 플립플롭 1개가 1Bit를 구성하는 2진 셀

- 반도체 기억장치에서 2진수 1자리값을 기억하는 메모리 소자

- 플립플롭은 레지스터를 구성하는 기본 소자

- 기본적인 플립플롭은 2개의 NAND 또는 NOR 게이트를 이용하여 구성



 https://hoyhouse.tistory.com/3 

https://myeonguni.tistory.com/1113

https://daanist.tistory.com/25

https://too-march.tistory.com/10