Kocw 컴퓨터구조 - kocw keompyuteogujo

  • Chapter 3 컴퓨터구조

    http://cs.kumoh.ac.kr/main.do

  • 하드웨어 연결 그림

    본체

    입력 장치

    키보드

    마우스

    스캐너

    출력 장치

    모니터

    프린터

    스피커

    마이크

    파워서플라이

    메인보드

    HDDFDD ODD

    CPU

    ALU 레지스터

    캐쉬메모리

    헤드폰

    SSD

    DMA

    BIOS

    SATAEIDE

    RAM

    버스

    PCI

    PCI express

    AGP

    그래픽카드

    랜카드

    사운드카드

    GPU

    HDMIUSB

    시리얼포트

    패러렐포트

    웹캠

    PS2

    http://cs.kumoh.ac.kr/main.do

  • Contents

    1 컴퓨터 구조

    2 기계어

    3 프로그램 실행

    4 연산 명령

    5 다른 장치와의 통신

    6 기타 구조

    http://cs.kumoh.ac.kr/main.do

  • 2 기계어

    1. 기계 명령: CPU가 인식할 수 있도록 비트 패턴으로 인코

    딩된 명령

    2. 기계어(machine language):

    기계가 인식할 수 있는 모든 명령의 집합

    3. 컴퓨터가 처리할 수 있는 데이터는 2진수일뿐임

    즉 메모리에 저장된 내용은 단순한 비트열임

    가령) 00011101 :

    컴퓨터 하드웨어의 상황에 따라 다양하게 해석됨

    (명령어? 데이터? 숫자? 등)

    http://cs.kumoh.ac.kr/main.do

  • 2 기계어 철학의 양대 축

    1. RISC(Reduced Instruction Set Computing)

    A. 단순하고, 빠르고, 효율적인 소수의 명령

    B. 복잡한 처리는 모두 소프트웨어를 이용

    C. 예: Apple/IBM/Motorola의 PowerPC

    2. CISC(Complex Instruction Set Computing)

    A. 편리하고 강력한 다수의 명령

    B. 여러 개의 명령을 하나의 명령으로 처리

    C. 예: Intel의 Pentium

    http://cs.kumoh.ac.kr/main.do

  • 2.1 기계어: 명령의 종류

    1. 데이터 전송(data transfer):

    한 장소에서 다른 장소로 데이터를 복사

    한다(load, store)

    2. 연산(arithmetic/logic):

    기존의 비트 패턴을 사용하여 새로운 비

    트 패턴을 계산한다(add, and, not)

    3. 제어(control):

    프로그램 실행을 지시한다(jmp, jsr)

    http://cs.kumoh.ac.kr/main.do

  • 2.1 기계어: 명령의 종류

    1. 명령어 형식의 종류

    2. 연산코드: 명령

    3. 오퍼랜드: 명령 수행에 필요한 데이터

    http://cs.kumoh.ac.kr/main.do

  • 2.2 가상 컴퓨터 시스템 가정

    1. 레지스터: 연산을 위한 값을 가지고 있는 소규모 기억장치

    2. 명령 레지스터: 현재 수행할 명령을 보관

    3. 프로그램 카운터: 다음 실행할 명령의 주소를 보관

    중앙처리장치 주기억장치

    http://cs.kumoh.ac.kr/main.do

  • 2.2 주기억장치에 저장된 값들에 대한 덧셈 과정 예

    단계 1. 덧셈에 사용될 값 중의 하나를

    주기억장치에서 가져와 레지스터에 넣는다.

    단계 2. 덧셈에 사용될 또 다른 값을 주기억장치에서

    가져와 또 다른 레지스터에 넣는다.

    단계 3. 단계 1, 2에서 사용된 레지스터들을 입력으로

    사용하고 결과는 또 다른 레지스터에

    저장하도록 덧셈 회로를 작동시킨다.

    단계 4. 결과를 주기억장치에 저장한다.

    단계 5. 멈춘다.

    http://cs.kumoh.ac.kr/main.do

  • 2.2 메모리에 저장된 값들에 대한 나눗셈 과정 예

    단계 1. 메모리에서 값 하나를 받아와서 레지스터에 LOAD하라.

    단계 2. 메모리에서 또 다른 값 하나를 받아와서 또 다른

    레지스터에 LOAD하라.

    단계 3. 두 번째 값이 0일 경우, 단계 6으로 점프하여라.

    단계 4. 첫 번째 레지스터의 내용을 두 번째 레지스터의

    내용으로 나누어 얻은 몫을 세 번째 레지스터에

    넣어라.

    단계 5. 세 번째 레지스터의 내용을 메모리에 STORE하라.

    단계 6. 멈춘다.

    http://cs.kumoh.ac.kr/main.do

  • 2.2 기계 명령의 요소들

    1. 명령코드(opcode): 실행할 명령을 지정 (덧셈 뺄셈 등)

    2. 피연산자(operand): 명령에 관한 추가 정보를 제공

    A. 피연산자에 대한 해석은 명령 코드에 따라 다름

    3. 16비트 컴퓨터 경우의 예

    http://cs.kumoh.ac.kr/main.do

  • 2.2 덧셈 예제의 명령 코딩 예

    인코딩된 명령 해설

    156C 주소가 6C인 메모리 셀에 들어있는 비트 패턴으로 5번 레지스터를 채운다.

    166D 주소가 6D인 메모리 셀에 들어있는 비트 패턴으로 6번 레지스터를 채운다.

    5056

    5번 레지스터와 6번 레지스터의 내용에 대해 2의 보수 덧셈을 수행하고,

    그 결과를 0번 레지스터에 넣는다.

    306E 0번 레지스터의 내용을 주소가 6E인 메모리 셀에 저장한다.

    C000 멈춘다.

    http://cs.kumoh.ac.kr/main.do

  • 3 프로그램의 실행: 기계 주기

    1. 기계 주기(machine cycle) :

    A. 인출(fetch)

    B. 해석(decode)

    C. 실행(execute)

    D. Clock에 의하여 동기화되며, 기계 주기를 반복 수행하여 프로그램 실행

    http://cs.kumoh.ac.kr/main.do

  • 3 프로그램의 실행 예: 실행 대기

    1. 16비트 컴퓨터, 프로그램 카운터 A0 입력

    2. 실행 대기

    http://cs.kumoh.ac.kr/main.do

  • 3 프로그램의 실행 예: 인출

    1. 인출

    16비트 컴퓨터로 프로그램 카운터의 값은 2바이트 증가함

    http://cs.kumoh.ac.kr/main.do

  • 3 프로그램의 실행 예: 해석, 실행

    1. 해석 (156C)

    명령 1(LOAD) → 레지스터번호 5, 메모리주소 6C

    2. 실행

    3. 다음명령 166D의 경우:

    명령 1(LOAD) → 레지스터번호 6, 메모리주소 6D

    http://cs.kumoh.ac.kr/main.do

  • 3 프로그램 및 데이터

    1. 주기억장치 안에는 여러 개의 프로그램이 서로 다른 영역

    에 위치하여 동시에 저장

    2. 프로그램과 데이터 구분이 어려움

    (실행 시점의 해석에 의해 결정됨)

    http://cs.kumoh.ac.kr/main.do

  • 4 연산(arithmetic/logic) 명령

    1. 산술연산, 논리연산, 자리이동 연산으로 분류가 가능함

    2. 산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈

    A. 정확한 동작은 값들의 인코딩 방식에 따라 달라진다

    (2의 보수, 부동소수점).

    3. 논리 연산: AND, OR, XOR

    A. 마스킹(masking)

    4. 회전(rotate) 및 자리 이동(shift):

    A. 회전식 자리 이동(circular shift)

    B. 논리적 자리 이동(logical shift)

    C. 산술적 자리 이동(arithmetic shift)

    D. Shift 연산의 경우 x2 또는 /2 효과

    http://cs.kumoh.ac.kr/main.do

  • 4.1 논리 연산

    1. 논리 연산 표

    1

    1 1

    1

    0

    http://cs.kumoh.ac.kr/main.do

  • 4.1 논리 연산 예

    1. 논리 연산 응용

    2. AND 연산

    3. OR 연산

    4. XOR 연산

    http://cs.kumoh.ac.kr/main.do

  • 4.2 자리이동연산

    1. 회전식 자리이동: 잘려나간 비트를 반대쪽에 삽입하는 방법

    http://cs.kumoh.ac.kr/main.do

  • 4.2 자리이동연산

    1. 논리적 자리이동: 잘려나간 비트를 항상 0으로 채우는 방법

    http://cs.kumoh.ac.kr/main.do

  • 4.2 자리이동연산

    1. 산술적 자리이동: 부호비트는 변경되지 않도록 하여 자리이동 방법

    2. 좌측 자리 이동

    x2

    3. 우측 자리 이동

    /2

    00000100 – 4

    00000010 – 2

    00000001 – 1

    00000100 – 4

    00001000 – 8

    00010000 – 16

    http://cs.kumoh.ac.kr/main.do

  • 5 다른 장치와의 통신

    1. 제어기(controller): 컴퓨터와 장치와의 통신을 처리하는 중개 장치

    A. 각 장치유형마다 전용 제어기가 존재함

    B. 범용 제어기: USB와 파이어와이어(FireWire)

    2. 포트(port): 장치를 컴퓨터에 연결하는 지점

    3. 장치간 연결 도식

    http://cs.kumoh.ac.kr/main.do

  • 5 CPU와 제어기 사이의 통신 방법

    1. 제어기 전용명령을 사용하는 방법

    A. 각 제어기마다 비트패턴을 지정하여 통신하는 방법

    B. 단점?

    제어기 전용 명령이 필요

    제어기가 다수인 경우 CPU 설계가 복잡해지는 한계가 있음

    http://cs.kumoh.ac.kr/main.do

  • 5 CPU와 제어기 사이의 통신 방법

    1. 주기억장치 제어명령을 사용하는 방법

    A. 주기억장치와의 통신 명령을 이용하여 각 제어기와 통신하는 방

    법으로, 특정 주소를 지정하여 활용함

    (주기억장치는 해당 주소를 무시하도록 설계함)

    B. 입출력 장치들이 각기 다른 메모리 위치에 나타나는 것과 같이

    동작하므로 메모리 사상 입출력(Memory-mapped I/O)라고 함

    C. 장점? 기계어 명령이 간단하게 표현됨

    http://cs.kumoh.ac.kr/main.do

  • 5 다른 장치와의 통신

    1. DMA(Direct Memory Access):

    제어기가 버스를 경유하여 직접 주기억장치에 접근

    2. 폰노이만 병목현상:

    A. 불충분한 버스 속도로 인한 성능 저하 현상

    B. 메모리 접근 vs 디스크 접근 속도: CPU 활용률 저하

    3. 핸드셰이킹(handshaking):

    컴퓨터 구성요소 사이의 데이터 전송 조정 과정

    4. 인터럽트(interrupt):

    시스템의 성능향상을 위하여 필요함

    http://cs.kumoh.ac.kr/main.do

  • 5 다른 장치와의 통신

    1. 병렬 통신(parallel communication):

    다중 통신 경로를 사용하여 비트들을 동시에 전송한다.

    예) 컴퓨터의 프린터 포트

    2. 직렬 통신(serial communication):

    단일 통신 경로를 사용하여 한 번에 한 비트씩 전송한다.

    예) 컴퓨터의 시리얼 포트 (휴대폰 USB 연결 등으로 확인 가능)

    http://cs.kumoh.ac.kr/main.do

  • 5 다른 장치와의 통신: 데이터 전송 속도

    1. 측정 단위

    A. Bps: Bits per second

    B. Kbps: Kilo-bps (1,000 bps)

    C. Mbps: Mega-bps (1,000,000 bps)

    D. Gbps: Giga-bps (1,000,000,000 bps)

    2. 대역폭(bandwidth): 최대 전송 속도

    http://cs.kumoh.ac.kr/main.do

  • 6 기타 컴퓨터 구조

    1. 기억장치의 구성

    2. 기억장치 계층

    http://cs.kumoh.ac.kr/main.do

  • 6 기타 컴퓨터 구조 : 캐쉬 메모리

    1. 캐쉬(Cache) 기억장치: CPU와 주기억장치 사이에 설치한 접근 속도

    가 빠른 소규모 기억장치

    2. 적중률(hit ratio)

    3. 교체 알고리즘

    A. LRU(Least Recently Used) 방식, FIFO(First-In First-Out) 방식

    B. LFU(Least Frequently Used) 방식, 임의(random) 교환 방식

    적중률 = 캐쉬에 적중된 횟수

    기억장치 총 접근 횟수

    http://cs.kumoh.ac.kr/main.do

  • 6 기타 컴퓨터 구조 : 파이프라이닝

    1. 처리율(throughput) 개선을 위한 기술(1)

    A. 파이프라이닝(pipelining): 기계 주기의 단계들을 중첩하여 성능 향상

    분기 명령시 효율성 없음

    http://cs.kumoh.ac.kr/main.do

  • 6 기타 컴퓨터 구조: DMA

    1. DMA(Direct Memory Access)에 의한 입출력 방식

    A. 프로그램에 의한 입출력 방식과 인터럽트에 의한 입출력 방식의

    단점을 보완하기 위한 것

    B. CPU의 레지스터를 거치지 않고 직접 주기억장치와 입출력장치

    사이에서 데이터 전송이 이루어짐

    C. CPU가 유휴(idle) 상태가 될 수 있음

    http://cs.kumoh.ac.kr/main.do

  • 6 기타 컴퓨터 구조: 다중 프로세서

    1. 처리율(throughput) 개선을 위한 기술(2)

    A. 병렬 처리(parallel processing): 여러 개의 프로세서를 동시에 사용한다.

    B. SISD: 병렬 처리하지 않음

    C. MIMD: 여러 개의 프로그램이 각자 다른 데이터를 사용하여 수행됨

    D. SIMD: 동일한 프로그램이 여러 데이터에 적용됨

    2. 멀티프로세서(Multi-processor)

    A. 싱글코어 → 듀얼코어 → 쿼드코어 -> 옥타코어

    (하나의 칩 안에 여러 개 ALU 등을 포함)

    http://cs.kumoh.ac.kr/main.do