중앙처리장치

tycode·2021년 5월 14일
0

C.S (Computer Science)

목록 보기
24/40
post-custom-banner

구성 요소

: 컴퓨터에서 데이터 처리동작을 수행하는 부분을 중앙 처리 장치(CPU). CPU는 레지스터 세트(Register Set), 산술논리장치(ALU: Arithmetic Logic Unit) 그리고 제어장치(Control Unit)로 구성된다.

내부 구조

MAR: 메모리 상태를 체크해줌
MBR: 임시 저장공간

레지스터들 명칭과 기능

  • 프로그램 계수기(Program Counter)
    : 다음에 수행될 명령어가 들어있는 주기억장치의 주소를 기억하고 있는 레지스터로 IC(Instruction Counter: 명령어 계수기) 혹은 LC(Location Counter: 위치 계수기)라고도 부른다.
  • 명령 레지스터(Instruction Register)
    : IR이라고도 하며, 프로그램 계수기(PC)가 지정하는 주소에 기억되어 있는 명령어를 해독하기 위해 임시 기억하는 레지스터
  • 명령어 해독기(Instruction Decoder)
    : IR에 들어있는 명령코드의 해석(각종 명령코드 → 제어 신호화 하여 기계 사이클로 전송)을 담당하는 논리회로
  • 제어장치(Control Unit)
    : ID로부터 보내져온 신호에 따라 명령어를 실행(clock에 의해 발생)
  • 범용 레지스터(General Purpose Register)
    : 작업 레지스터에서 DATA가 용이하게 처리되도록 임시로 자료를 저장하는 경우 산용
  • 작업 레지스터(Working Register)
    : 산술논리연산을 실행할 수 있도록 자료를 저장하고 그 결과를 저장(GPR과의 차이점은 ALU에 연결 되어있나?의 차이점이다.)
  • 상태 레지스터(Status Register)
    : CPU의 상태를 나타내는 특수목적의 레지스터 - 연산결과의 상태, 영 Z(Zero), 부호 S(Sign), 오버플로우 V(Overflow), 캐리 C(Carry), 인터럽트 I(Interrupt)

ADD 명령어의 실행 예

FETCH: 작업이 일어난 것이 아닌 데이터를 이동 시키는 것.

명령어 구성과 실행

  • 레지스터 전송 언어
    : 레지스터(Register)에 저장된 데이터의 조작을 위해 실행되는 동작을 마이크로연산(Micro-Operation)이라 함, 이는 하나의 클럭 펄스 내에서 실행되는 기본적인 동작(ex: 시프트(shift), 카운트(count), 클리어(clear), 로드(load)..)

  • 일반적 표현들

  • 레지스터 전송의 기본기호

CPU 디자인

  • CPU내의 디바이스들간 상호 연결

    • 직접 연결: 연결 복잡도가 장치수의 제곱에 비례
    • 버스연결: 공용선에 의한 연결
      • 가장 가성비 높은 연결 방식
      • 관리를 위한 다양한 방법이 제시된다.
  • 스택, 큐, 데크

마이크로 명령과 ALU

  • 마이크로 연산
    : 레지스터에 저장된 데이터에 대해 수행되는 기본적인 연산으로 디지털 컴퓨터에서 흔히 사용되는 마이크로 연산은 네 가지로 분류된다.

    • 레지스터 사이에서 이진 정보를 전송하는 레지스터 전송 마이크로 연산
    • 레지스터에 저장된 수치 데이터에 대해 산술 연산을 수행하는 산술 마이크로 연산
    • 레지스터에 저장된 비수치 데이터에 대해 비트 조작 연산을 수행하는 논리 마이크로 연산
    • 레지스터에 저장된 데이터에 대해 시프트 연산을 수행하는 시프트 마이크로 연산
  • 산술 논리 연산 장치(ALU): 산술 연산과 논리 연산

    • 주로 정수 연산을 처리
    • 부동 소수(Floating-Point Number) 연산: FPU(Floating-Point Unit)
    • 최근에는 ALU가 부동 소수 연산까지 처리
  • 산술 연산: 덧셈, 뺼셈, 곱셈, 나눗셈, 증가, 감소, 보수

  • 논리 연산: AND, OR, NOT, XOR, 시프트(shift)
    MSB: Most Significant Bit
    LSB: Least Significant Bit

    ![]

명령어 집합

  • 실행 순서에 따른 명령어 분류

    • 순차적 실행 명령어 - 전체 실행 명령어의 70~80% 차지
    • 분기 명령어
    • 부함수 호출 명령어
    • 복귀 명령어
  • 명령어 구문 형식

    ① 명령 코드: CPU가 실행할 수 있또록 디자인 된 연산
    ② 오퍼랜드: 연산에 사용되는 자료 값, 자료가 저장된 주소에 관한 정보
    ③ 주소 지정 모드(addressing mode): 오퍼랜드가 저장된 위치를 인덱싱(지정)하는 방법

  • 명령어 집합의 설계

주소 지정 모드(Addressing Mode)

: 명령어의 구조상 자료가 저장되어 있는 장소를 지정하는 방법이 필요함, 이유는 최대한 하드에어와 소프트웨어의 독립성을 유지하여 프로그램의 유연성(pointer, indexing 등..)을 가능하게 하여 명령어의 수와 길이를 줄이기 위한 세계적 표준화 기법

  • 묵시적 모드(operand가 명령어에 포함되어 있지 않은 특수 모드)
    • NOP: NO operation, 오퍼랜드가 필요 없는 평령어
    • INC: 묵시적 오퍼랜드인 누산기(AC)의 연산 명령어
    • ADD: 스택 구조의 명령어(스택에 오퍼랜드가 저장)
  • 직접 값 모드(operand자체가 명령어에 포함되어 있는 모드)
    • ex) MOV R1, #100; 십진수 값 100이 두번째 오퍼랜드로 직접 명령문에 포함되어 있는 경우
  • 레지스터 모드(Register Mode: 오퍼랜드가 레지스터에 저장된 모드)
    • ex) ADD R1, R2; 레지스터 R1과 R2에 보유하고 값이 오퍼랜드임
  • 메모리 직접 주소 모드(Direct Mode: 오퍼랜드가 저장된 메모리 주소를 나타내는 모드)
    • ex) MOV R1, 100; R1에 100번지의 내용을 이동하라는 내용(물론 기종에 따라 반대의 경우도 가능), 결국 100번지의 내용이 두번째 오퍼랜드 임.
  • 메모리 간접 주소 모드(Memory Indirect Addressing Mode: 메모리를 이용하여 간접적으로 주소를 지정하는 모드)
    • ex) MOV R1, @100; R1 ← M[100] or M[100] ← R1

입출력 구성

인터럽트

  • 인터럽트 인 에이블 플립플롭(Interrupt Enable Flip-Flop) IEN

    • 프로그램 제어전송 대신에 외부장치가 전송 준비가 되었을 때 컴퓨터에 알리는 방법에 활용되는 플립플롭
    • 컴퓨터는 프로그램 실행 도중 플래그를 체크하지 않으며, 플래그가 세트되면 컴퓨터는 즉각 실행 중이던 프로그램을 중지하고 플래그의 세트 정보를 받아들여 입출력을 실행/입출력 실행 후 즉시 원프로그램으로 복귀
  • 인터럽트 사이클의 흐름도

  • 메모리 상태 예제 설명
    • 메모리 주소 255에 있는 명령이 실행 중, R=1이고 인터럽트가 발생했다고 가정한다면
    • 헌져 PC ← 256복귀 주소
    • [before interrupt]에서와 같이 프로그래머는 입출력 서비스 프로그램을 주소 1120번지에 로드 시켜 놓았고, 주소 1 ← BUN1120 로드
    • [인터펍트 실행시] M[0] ← 256, PC ← 1, R ← 0(clear)
    • Execute M[1] 이는 1120번지로 분기하여 I/O program 실행
    • ION instruction에 의해 IEN을 1로 세트하고 프로그램 복귀 시도

컴퓨터 프로그래밍

일반적으로 컴퓨터는 하드웨어와 소프트웨어로 구성된다. 하드웨어를 잘 동작시킬 수 있도록 제어하고, 지시하는 모든 종류의 프로그램을 소프트웨어라고 한다. 소프트웨어는 크게 시스템소프트웨어와 응용 소프트웨어로 나뉜다.

  • 프로그램의 종류

  • 프로그램 처리 과정

기계어

: 프로그램이란 컴퓨터로 하여금 원하는 데이터 처리 업무를 시행시키기 위해서 작성된 명령어 또는 문장으로 구성된 리스트

  • 이진 코드 - 메모리상에 나타나는 형태의 명령어로서 이진수 명령어와 피연산자의 시퀀스
  • 8/16진수 - 이진수 코드를 편의상 8/16진수 형태로 표현한 내용
  • 기호코드 - 사용자가 연산 부분, 주소 부분 등에 대하여 기호(문자, 숫자, 특수 문자 등)를 사용하게 되며, 각 기호 명령어는 하나의 이진 코드로 번역되는데 이러한 변역을 어셈블러(assembler)가 담당 - assembly language
  • 고급 프로그래밍 언어 - 컴퓨터 하드웨어의 동작을 염두에 두지 ㅇ낳고(HW. VS. SW 독립성)문제해결에 관점을 맞춰서 개발한 인간 중신의 언어 C, C#, JAVA등이 대표적 사용 언어들. 이러한 부류의 언어를 컴파일러형 언어(compiler language)다.
  • 프로그래밍 언어간 관계


어셈블리어 언어

프로그래밍 언어는 일정한 규칙에 의해서 정의되므로 작성된 프로그램이 정확히 번역되기 위해서는 그 언어의 형식 규정을 잘 지켜야 한다. 모든 컴퓨터는 각가의 어셈블리 언어를 가지고 있으며 이들에 대한 규칙 등은 컴퓨터 제조 업체로부터 출판되어진다.

  • 어셈블리어의 언어 규칙
    • 라벨 필드 → 기호 주소를 나타내거나 빈칸이 될 수도 있다.
      • 기호주소는 세 개 이하의 영자숫자들로 구성, 첫 자는 문자여야함
    • 명령어 필드 → 기계 명령어나 슈도 명령어를 기술
      • 메모리 참조 명령어(MRI)
      • 레지스터 참조 또는 입출력 명령어(non-MRI)
      • 슈도 명령어
    • 코멘트 필드 → 명령어에 대한 주석이나 해설을 하거나 불필요한 경우 생략도 가능함.

프로그래밍의 구현(architecture)

  • 프로그램 처리 과정

  • 소프트웨어 개발 Paradigm

post-custom-banner

0개의 댓글