본문 바로가기
IT License

정보처리기사 필기대비 공부노트 (2_전자계산기 구조)

by 시뮝 2018. 4. 11.
728x90

■  레지스터 (Register)

레지스터(Register)는 CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 저장소이다.

- 플립플롭(Flip-Flop)이나 래치(Latch)들을 병렬로 연결하여 구성한다.

- 메모리 중에서 속도가 가장 빠르다

- 레지스터의 크기는 워드를 구성하는 비트 개수만큼의 플립플롭으로 구성되며, 여러 개의 플립플롭은 공통 클록의 입력에 의해 동시에 여러 비트의 자료가 저장된다.

- 레지스터를 구성하는 플립플롭은 저장하는 값을 임의로 설정하기 위해 별도의 입력 단자를 추가할 수 있으며, 저장값을 0으로 하는 것을 설정해제(CLR)라 한다.


   레지스터 간의 자료 전송

- 직렬 전송 : 직렬 시프트 마이크로 오퍼레이션을 뜻하며, 병렬 전송에 비해 전송 속도가 느리다.

- 병렬 전송 : 하나의 클록 펄스 동안에 레지스터 내의 모든 비트, 즉 워드가 동시에 전송되는 전송 방식이다.

- 버스 전송 : 모든 레지스터들이 공통으로 이용하는 경로로, 병렬 전송에 비해 결선의 수를 줄일 수 있다는 장점이 있다.


   레지스터의 종류 및 기능

- 프로그램 카운터, 프로그램 계수기(PC; Program Counter)

- 다음 번에 실행할 명령어의 번지를 기억하는 레지스터

- 분기 명령이 실행되는 경우 그 목적지 주소로 갱신됨

- 명령 레지스터(IR; Instruction Register)

- 현재 실행중인 명령의 내용을 기억하는 레지스터

- 누산기(AC; Accumulator)

- 연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심

- 상태 레지스터(Status Register), PSWR(Program Status Word Register), 플래그 레지스터

- 시스템 내부의 순간순간의 상태가 기록된 정보를 PSW라고 함

- 오버플로, 언더플로, 자리올림, 계산상태(0, -, +), 인터럽트 등의 PSW를 저장하고 있는 레지스터

- 프로그램 제어와 밀접한 관계를 지님

- 메모리 주소 레지스터(MAR; Memory Address Register)

- 기억장치를 출입하는 데이터의 번지를 기억하는 레지스터

- 메모리 버퍼 레지스터(MBR; Memory Buffer Register)

- 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터로 CPU가 데이터를 처리하기 위해서는 반드시 거쳐야 함

- 베이스 레지스터(Base Register)

- 명령이 시작되는 시작 번지를 기억하고 있는 레지스터

- 인덱스 레지스터(Index Register)

- 주소의 변경, 서브루틴 연결 및 프로그램에서의 반복 연산의 횟수를 세는 레지스터

- 프로그래머가 내용을 변경할 수 있음

- 데이터 레지스터(Data Register)

- 연산에 상요될 데이터를 기억하는 레지스터

- 시프트 레지스터(Shift Register)

- 저장된 값을 왼쪽 또는 오른쪽으로 1Bit 씩 자리를이동시키는 레지스터

- 2배 길이 레지스터라고도 함

- 메이저 스테이터스 레지스터(Major Status Register)

- CPU의 메이저 상태를 저장하고 있는 레지스터



※ 오버플로 : 연산의 결과값이 기억 워드의 기억 용량을 초과하여 넘쳐나는 상태

※ 언더플로 : 연산의 결과값이 컴퓨터가 표현할 수 있는 값보다 작아 표현이 불가능한 상태

※ 메이저 상태 : CPU의 현재 상태를 말하는 것으로 인출, 간접, 실행, 인터럽트 상태가 있다.



■   메이저 스테이트 (Major State)

메이저 스테이트는 현재 CPU가 무엇을 하고 있는가를 나타내는 상태로서, CPU가 무엇을 위해 주기억장치에 접근하느냐에 따라 Fetch, Indirect, Execute, Interrupt 이렇게 네 개의 상태가 있다.

- CPU는 메이저 스테이트의 네 가지 단계를 반복적으로 거치면서 동작을 수행한다.

- 메이저 스테이트는 메이저 스테이트 레지스터를 통해서 알 수 있다.

- Major Cycle 또는 Machine Cycle 이라고도 한다.


1. 인출 단계(Fetch Cycle)

- 명령어를 주기억장치에서 중앙처리장치의 명령 레지스터로 가져와 해독하는 단계이다.

- 읽어와 해석된 명령어가 1 Cycle 명령이면 이를 수행한 후 다시 Fetch Cycle로 변천한다.


2. 간접 단계(Indirect Cycle)

- Fetch 단계에서 해석된 명령의 주소부가 간접주소인 경우 수행된다.

- 이 사이클에서는 Fetch 단계에서 해석한 주소를 읽어온 후 그 주소가 간접주소이면 유효주소를 계산하기 위해 다시 Indirect 단계를 수행한다.


3. 실행 단계(Execute Cycle)

- Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계이다.

- 플래그 레지스터의 상태 변화를 검사하여 Interrupt 단계로 변천할 것인지를 판단한다.

- Interrupt 요청 신호를 나타내는 플래그 레지스터의 변화가 없으면 Fetch 단계로 변천한다.


4. 인터럽트 단계(Interrupt Cycle)

- 인터럽트 발생 시 복귀주소(PC)를 저장시키고, 제어 순서를 인터럽트 처리 프로그램의 첫 번째 명령으로 옮기는 단계이다.

- 인터럽트 단계를 마친 후에는 항상 Fetch 단계로 변천한다.



■   캐시 메모리(Cache Memory)

- 캐시 메모리는 CPU 의 속도와 메모리의 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory 이다.

- 캐시는 주기억장치와 CPU 사이에 위치한다.

- 캐시 메모리는 메모리의 계층 구조에서 가장 빠른 소자이며, 처리 속도가 거의 CPU 의 속도와 비슷할 정도이다.

- 캐시를 사용하면 주기억장치를 접근(Access)하는 횟수가 줄어들기 때문에 컴퓨터의 처리 속도가 향상된다.

- 캐시 주소표는 검색 시간을 단축시키기 위해 주로 연관 기억장치(CAM; Associative Memory)를 사용한다.

- 캐시의 크기는 보통 수십 KByte ~ 수백 KByte 이다.



■   주소지정방식(Addressing Mode)

   주소 설계 시 고려 사항

  1. 표현의 효율성 : 빠르게 접근하고 주소 지정에 적은 비트 수를 사용할 수 있도록 다양한 어드레스 모드를 사용할 수 있어야 한다.
  2. 사용의 편의성 : 다양하고 융통성 있는 프로그램 작업을 위해 포인터, 프로그램 리로케이션 등의 편의를 제공하여야 한다.
  3. 주소공간과 기억공간의 독립성 : 프로그램 상에서 사용한 주소를 변경 없이 실제 기억공간 내의 주소로 재배치할 수 있도록 서로 독립적이어야 한다.


   주소지정방식의 종류

  1. 암시적(묵시적) 주소지정방식(Implied Mode)
    - 명령 실행에 필요한 데이터의 위치를 지정하지 않고 누산기나 스택의 데이터를 묵시적으로 지정하여 사용한다.
    - 오퍼랜드가 없는 명령이나 PUSH R1처럼 오퍼랜드가 1개인 명령어 형식에 사용된다.

  2. 즉치(즉시)적 주소지정방식(Immediate Mode)
    - 즉치적 주소지정방식은 명령어 자체에 오퍼랜드(실제 데이터)를 가지고 있는 방식이다.
    - 별도의 기억장소르 액세스하지 않고 CPU에서 곧바로 자료를 이용할 수 있어서 실행 속도가 빠르다는 장점이 있다.
    - 명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적이다.

  3. 직접 주소지정방식(Direct Mode)
    - 직접 주소지정방식은 명령의 주소부(Operand)가 사용할 자료의 번지를 표현하고 있는 방식이다.
    - 명령의 Operand 부에 표현된 주소를 이용하여 실제 데이터가 기억된 기억장소에 직접 사상시킬 수 있다.
    - 주소 부분에 실제 사용할 데이터의 유효 주소를 적기 때문에 주소 길이에 제약을 받는다.
    - 기억 용량이 2^n 개의 Word 인 메모리 시스템에서 주소를 표현하려면 n Bit 의 Operand 부가 필요하다.
    - 직접 주소지정방식에서 명령의 Operand 부에 데이터를 가지고 있는 레지스터의 번호를 지정하면 레지스터 모드라고 한다.

  4. 간접 주소 지정방식(Indirect Mode)
    - 명령어 내의 Operand 부에 실제 데이터의 주소가 아니고, 실제 데이터의 주소가 저장된 곳의 주소를 표현하므로, 최소한 주기억장치를 두 번 이상 접근하여 데이터가 있는 기억장소에 도달한다.
    - 명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트(Operand 부의 비트) 수로 나타낼 수 없을 때 사용하는 방식이다.
    - 명령의 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능한 방식이다.
    - 간접 주소지정방식에서 명령의 Operand 부에 데이터의 주소를 가지고 있는 레지스터의 번호를 지정하면 레지스터 간접 모드라고 한다.

  5. 계산에 의한 주소지정방식
    - 계산에 의한 주소지정방식은 Operand 부와 CPU의 특정 레지스터의 값이 더해져서 유효주소를 계산하는 방식이다.
    - 사용하는 레지스터의 종류에 따라 상대, 베이스, 인덱스 주소지정방식으로 구분한다.
    ① 상대주소(Relative Mode)
        - 유효주소 : 명령어의 주소 부분 + PC
        - 명령어 자신의 기억장소를 기준으로 하여 데이터의 위치를 지정하는 방식
    ② 베이스 레지스터(Base Register Mode)
        - 유효주소 : 명령어의 주소 부분 + Base Register
        - 프로그램을 재배치(Relocation)할 때 이용한다.
    ③ 인덱스 레지스터(Index Register Mode)
        - 유효주소 : 명령어의 주소 부분 + Index Register


■   논리회로

  1. 조합논리회로
    - 반가산기, 전가산기, 병렬가산기, 반감산기, 전감산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서, 다수결회로, 비교기 등
    - 입력과 출력을 가진 논리게이트의 집합으로 기억 기능이 없다.
    - 멀티플렉서 : 여러 개의 입력선 중 하나의 입력선만 출력에 전달한다.

  2. 순서논리회로
    - 플립플롭, 카운터, 레지스터, RAM, CPU 등
    - 입력과 논리회로의 현재 상태에 대해 출력이 결정되는 회로이다.



■   Bandwidth(대역폭, 전송률)

- 대역폭은 메모리로부터 또는 메모리까지 1초 동안 전송되는 최대한의 정보량으로 기억장치의 자료 처리속도를 나타내는 단위이다.

- 메모리 워드의 길이가 작을 수록 대역폭이 좋다.



■   메모리 인터리빙(Memory Interleaving)

- 인터리빙이란 여러 개의 독립된 모듈로 이루어진 복수 모듈 메모리와 CPU 간의 주소 버스가 한 개로만 구성되어 있으면 같은 시각에 CPU로부터 여러 모듈들로 동시에 주소를 전달할 수 없기 때문에, CPU가 각 모듈로 전송할 주소를 교대로 배치한 후 차례대로 전송하여 여러 모듈을 병행 접근하는 기법이다.

- CPU가 버스를 통해 주소를 전달하는 속도는 빠르지만 메모리 모듈의 처리 속도가 느리기 때문에 병행 접근이 가능하다.

- 메모리 인터리빙 기법을 사용하면 기억장치에 대한 접근 시간을 효율적으로 높일 수 있으므로 캐시 기억장치, 고속 DMA 전송 등에서 많이 사용된다.



■   파이프라인의 수행 순서

  1. IF(Instruction Fetch)
    : 명령 파이프라인, 명령인출(instruction fetch)과 수행단계(execute phase)를 중첩시켜 하나의 연산을 수행하는 구조를 가진 처리방법이다.
  2. ID(Instruction Decode)
  3. OF(Operand Fetch)
  4. EX(Execution)

■   I/O 제어 방식

  1. Program 에 의한 I/O
  2. DMA 에 의한 I/O
  3. Channel 에 의한 I/O
  4. 스트로브펄스(Strobe Pulse)
    비동기 데이터 전송에 사용됨
  5. 핸드셰이킹(Handshaking)
    비동기 데이터 전송에 사용됨



■  DMA(Direct Memory Access)에 의한 I/O

   DMA 는 입 · 출력장치가 직접 주기억장치를 접근(Access)하여 Data Block 을  입 · 출력하는 방식으로,  입 · 출력 전송이 CPU의 레지스터를 경유하지 않고 수행된다.

- CPU는 I/O에 필요한 정보를 DMA 제어기에 알려서 I/O 동작을 개시시킨 후 I/O 동작에 더 이상 간섭하지 않고 다른 프로그램을 할당하여 수행한다.
- DMA 방식은  입 · 출력 자료 전송 시 CPU를 거치지 않기 때문에 CPU의 부담이 없어 보다 빠른 데이터의 전송이 가능하다.

- DMA는 인터럽트 신호를 발생시켜 CPU에게  입 · 출력 종료를 알린다.

- DMA는 블록으로 대용량의 데이터를 전송할 수 있다.

- DMA는 Cycle Steal 방식을 이용하여 데이터를 전송한다.

- CPU와 DMA 제어기는 메모리와 버스를 공유한다.

- CPU와 DMA 제어기로 보내는 자료

- I/O 장치의 주소

- 데이터가 있는 주기억장치의 시작 주소

- DMA를 시작시키는 명령

- 입 · 출력 하고자 하는 자료의 양

- 입력 또는 출력을 결정하는 명령


   DMA의 구성 요소

- 인터페이스 회로 : CPU와 입 · 출력 장치와의 통신 담당

- 주소 레지스터 (Address Register) 및 주소 라인 : 기억장치의 위치 지정을 위한 번지기억 및 전송

- 워드 카운트 레지스터 (Word Count Register) : 전송되어야 할 워드의 수 기억

- 제어 레지스터 (Control Register) : 전송 방식 결정

- 데이터 레지스터 (Data Register) : 전송에 사용할 자료나 주소를 임시로 기억하는 버퍼 역할을 함


   DMA의 전송 절차

① CPU가 DMA 제어기에게 명령을 내린다.

② DMA 제어기가 CPU에게 버스 사용을 요구한다. (Bus Request)

③ CPU가 DMA 제어기에게 버스 사용을 허락한다. (Bus Grant)

④ DMA 제어기가 주기억장치에서 데이터를 읽어 디스크로 전송한다. (Data Transfer)

⑤ (~)번을 반복하다가 데이터 전송이 완료되면 인터럽트(Interupt) 신호를 보낸다.



■   채널(Channel)에 의한 I/O

- Channel은 I/O를 위한 특별한 명령어를 I/O 프로세서에게 수행토록 하여 CPU 관여 없이 주기억장치와 입 · 출력장치 사이에서 입 · 출력을 제어하는 입 · 출력 전용 프로세서(IOP)이다.

- DMA 제어기의 한계를 극복하기 위하여 고안된 방식이다.

- 채널은 DMA 방법으로 입 · 출력을 수행하므로 DMA 의 확장된 개념으로 볼 수 있다.


▷   채널의 특징

- 채널 제어기는 채널 명령어로 작성된 채널 프로그램을 해독하고 실행하여 입 · 출력 동작 처리

- 채널은 CPU로부터 입 · 출력을 수행하므로 DMA 의 확장된 개념

입 · 출력장치와 주기억장치를 연결하는 중개 역할을 담당하는 부분

입 · 출력장치와 주기억장치 사이의 데이터 전송을 담당하는 입 · 출력 전담 장치

입 · 출력장치와 CPU 사이에 존재하는 속도의 차이로 인하여 발생하는 단점을 해결하기 위해서 고려된 장치

- CPU의 명령을 받고 입 · 출력 조작을 개시하면 CPU와는 독립적으로 조작하는 장치


   채널과 DMA의 비교

1. DMA 방식과의 유사점

- CPU에 대해 완전히 자율적으로 동작, 즉, CPU는 I/O 동작을 개시시킨 후 I/O 동작에 더 이상 간섭하지 않고 다른 명령을 수행한다.

- 주기억장치를 직접 접근(Direct Access) 하여 I/O 명령을 수행하고 I/O 관련 자료를 기록하거나 판독한다.

2. DMA 방식과의 차이점

- DMA 는 한 개의 Instruction 에 의해 한 개의 Block 만을 입 · 출력한다.

- Channel 은 한 개의 Instruction 에 의해 여러 개의 Block 을 입 · 출력한다.


   채널의 종류

1. 선택 채널 (Selector Channel)

- 고속 입 · 출력장치(자기 디스크, 자기 테이프, 자기 드럼)와 입 · 출력하기 위해 사용한다.

- 특정한 한 개의 장치를 독점하여 입 · 출력한다.

2. 다중 채널 (Multiplexer Channel)

- 저속 입 · 출력장치(카드리더, 프린터)를 제어하는 개념이다.

- 동시에 여러 개의 입 · 출력장치를 제어한다.

- 여러 개의 I/O 장치가 채널의 기능을 공유한다.

- 시분할적으로 데이터를 전송한다.

3. Block Multiplexer

- 고속 입 · 출력장치를 제어하는 채널이다.

- 동시에 여러 개의 입 · 출력장치를 제어한다.

- 하나의 데이터 경로를 공유한다는 점과 고속의 입출력 장치를 취급한다는 점에서 바이트 멀티플렉서 채널과 Selector 채널을 결합한 형태의 채널이다.


   채널 명령어(CCW, Channel Command Word)

- 명령 코드(Operation Code) : 입 · 출력 명령을 지정함

- 데이터 주소(Data Address) : 블록의 시작 주소를 표시함

- 플래그(Flag) : CCW의 링크 주소 등 통신 목적이나 상태 기록을 위한 부분

- 워드 카운터(Word counter) : 전송될 블록의 단어 수를 표시함




※ 버스트 모드 : 하나의 I/O 장치가 데이터 전송을 행하고 있는 동안에는 채널의 기능을 완전히 독점하여 사용하므로 대량의 데이터를 고속으로 전송하는데 적합하다.

 고정채널 : 채널 제어기가 특정한 I/O 장치들에 전용인 전송통로를 지닌 형태를 말한다. 구성은 간단하지만 가변 채널에 비해 효율이 낮은 단점을 갖고 있다.



■   연산자의 기능


함수 연산 기능 : 수치적인 산술 연산과 비수치적인 논리 연산이 있음

- 산술 연산 : ADD, SUB, MUL, DIV, 산술 Shift 등

- 논리 연산 : NOT, AND, OR, XOR, 논리적 Shift, Rotate, Complement, Clear 등


자료 전달 기능 : CPU 와 기억장치 사이에서 정보를 교환하는 기능

- Load : 기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령

- Store : CPU에 있는 정보를 기억장치에 기억시키는 명령

- Move : 레지스터 간에 자료를 전달하는 명령

- Push : 스택에 자료를 저장하는 명령

- Pop : 스택에서 자료를 꺼내오는 명령


제어 기능 : 프로그래머가 명령의 실행 순서를 변경시키는 기능

- 무조건 분기 명령 : GOTO, Jump(JMP) 등

- 조건 분기 명령 : IF 조건, SPA, SNA, SZA 등

- Call : 부 프로그램 호출

- Return : 부 프로그램에서 메인 프로그램으로 복귀


입 · 출력 기능 : CPU와 I/O 장치 또는 메모리와 I/O 장치 사이에서 자료를 전달하는 기능

- INPUT : 입  · 출력장치의 자료를 주기억장치로 입력하는 명령

- OUTPUT :  주기억장치의 자료를 입  · 출력장치로 출력하는 명령



■   주요 연산자의 기능

  1. AND(Masking Operation)
    - AND 연산은 특정 문자 또는 특정 비트를 삭제(Clear)시키는 연산으로, Marsking 연산이라고도 함
    - AND 연산은 삭제할 부분의 비트를 0과 AND 시켜서 삭제하는 데, 대응시키는 0인 비트를 Mask Bit라 함
  2. OR(Selective-Set)
    - OR 연산은 특정문자를 삽입하거나 특정 비트에 1을 세트시키는 연산으로, Selective Set 연산이라고도 함
    - 삽입하거나 세트시킬 비트에 삽입할 문자 또는 1을 OR 연산시킴
  3. XOR(Compare, 비교)
    - XOR 연산은 2개의 데이터를 비교하거나, 특정 비트를 반전시킬 때 사용함
    - 2개의 데이터를 XOR 연산하여 결과에 1 Bit 라도 1이 있으면 서로 다른 데이터임
    - 반전시킬 때는 반전시킬 비트와 1 을 XOR 시킴
  4. NOT(Complement, 보수)
    - NOT 연산은 각 비트의 값을 반전시키는 연산으로 보수를 구할 때 사용함
  5. 논리 Shift
    - 논리 Shift 는 왼쪽 또는 오른쪽으로 1 Bit 씩 자리를 이동시키는 연산으로 데이터의 직렬 전송(Serial Transfer)에 사용함
    - 삽입되는 자리는 무조건 0임
  6. Rotate
    - Rotate 는 Shift 에서 밀려 나가는 비트의 값을 반대편 값으로 입력하는 연산임
    - 문자 위치를 변환할 때 사용함
  7. 산술 Shift
    - 산술 Shift 는 부호(Sign)를 고려하여 자리를 이동시키는 연산으로 2^n 을 곱하거나 나눌 때 사용함
    - 왼쪽으로 n Bit Shift 하면 원래 자료에 2^n을 곱한 값과 같음
    - 오른쪽으로 n Bit Shift 하면 원래 자료를 2^n으로 나눈 값과 같음
    - 홀수를 오른쪽으로 한 번 Shift 하면 0.5의 오차가 발생함
    - 산술 Shift 는 정수 표현 방식에서만 가능한 방법으로, 정수의 수치 표현 방법에 따라서 표현이 조금씩 다름



■   운영체제 운용 기법

  1. 온라인 시스템(On-Line System) : 다수의 컴퓨터나 단말장치를 통신 회선으로 연결하여 처리하는 방식
  2. 배치 파일 시스템(Batch File System) : 초기의 컴퓨터 시스템에서 사용된 형태로, 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식
  3. 듀얼 시스템(Dual System) : 컴퓨터 2대를 병렬로 설치하고 두 컴퓨터로 동시에 시스템을 운용하다가 한쪽 컴퓨터가 고장날 경우 다른 쪽 컴퓨터로 시스템을 운영하는 방식
  4. 다중 프로그래밍 시스템(Multi-Programming System) : 하나의 CPU 와 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
  5. 다중 처리 시스템(Multi-Processing System) : 여러 개의 CPU 와 하나의 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
  6. 실시간 처리 시스템(Real Time Processing System) : 데이터 발생 즉시, 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하는 방식
  7. 분산 처리 시스템(Distributed Processing System) : 여러 개의 컴퓨터(프로세서)를 통신 회선으로 연결하여 하나의 작업을 처리하는 방식



■   Micro Cycle Time 부여 방식의 종류별 특징

  1. 동기 고정식(Synchronous Fixed)
    - 모든 마이크로 오퍼레이션의 동작시간이 같다고 가정하여 CPU Clock의 주기를 Micro Cycle Time과 같도록 정의하는 방식이다.
    - 모든 마이크로 오퍼레이션 중에서 수행시간이 가장 긴 마이크로 오퍼레이션의 동작시간을 Micro Cycle Time으로 정한다.
    - 여러 종류의 마이크로 오퍼레이션의 수행 시 CPU 사이클 타입이 실제적인 오퍼레이션 시간보다 길며, 중앙처리장치의 시간 이용이 비효율적이다.
    - 모든 마이크로 오퍼레이션의 동작시간이 비슷할 때 유리한 방식이다.
  2. 동기 가변식(Synchronous Variable)
    - 수행시간이 유사한 Micro Operation 끼리 그룹을 만들어, 각 그룹별로 서로 다른 Micro Cycle Time 을 정의하는 방식이다.
    - 동기 고정식에 비해 CPU 시간 낭비르 줄일 수 있는 반면, 제어기의 구현은 조금 복잡하다.
    - 마이크로 오퍼레이션의 동작시간이 차이가 날 때 유리하다(정수배)
  3. 비동기식(Asynchronous)
    - 모든 마이크로 오퍼레이션에 대하여 서로 다른 Micro Cycle Time 을 정의하는 방식이다.
    - CPU 의 시간 낭비는 전혀 없으나, 제어기가 매우 복잡해지기 때문에 실제로는 거의 사용되지 않는다.



■   수치코드


- 수치코드에는 자리 값을 가지고 있는 가중 코드(Weighted Code) 와 자리 값이 없는 비가중 코드(Non-Weighted Code) 로 구분 할 수 있다.
- 10진 자기보수화 코드로는 2421 Code, Excess-3 Code 등이 대표적이다.
- 3 초과 코드는 8421 코드에 10진수 3을 더한 코드로 코드 내에 하나 이상의 1이 반드시 포함되어 있어 0과 무신호를 구분하기 위한 코드이다.


그레이 코드(Gray Code)

- 비가중(Weighted) 코드이다.

- BCD 코드의 인접하는 코드를 X-OR 연산하여 만든 코드이다.

- 입 · 출력장치, A/D 변환기, 주변장치 등에서 숫자를 표현할 때 사용된다.

- 1Bit 만 변화시켜 다음 수치로 증가시키기 때문에 하드웨어적인 오류가 적다.



■   인터럽트


   외부 인터럽트

- 외부 인터럽트는 다음과 같이 입 · 출력 장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생한다.


- 전원 이상 인터럽트(Power Fail Interrupt) : 정전이 되거나 전원 이상이 있는 경우

- 기계 착오 인터럽트(Machine Check Interrupt) : CPU 의 기능적인 오류 동작이 발생한 경우

- 외부 신호 인터럽트(External Interrupt)

- 타이머에 의해 규정된 시간(Time Slice)을 알리는 경우

- 키보드로 인터럽트키를 누른 경우

- 외부장치로부터 인터럽트 요청이 있는 경우

- 입 · 출력 인터럽트(Input-Output Interrupt)

- 입 · 출력 Data 의 오류나 이상 현상이 발생한 경우

- 입 · 출력 장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우


   내부 인터럽트

- 내부 인터럽트는 다음과 같이 잘못된 명령이나 데이터를사용할 때 발생하며, 트랩 (Trap)이라고도 부른다.

- 명령어 잘못에 의한 인터럽트 : 프로그램에서 명령어를 잘못 사용한 경우

- 프로그램 검사 인터럽트(Program Check Interrupt) : 0으로 나누거나, Overflow 또는 Underflow 가 발생한 경우

   소프트웨어 인터럽트

- 소프트웨어 인터럽트는 프로그램 처리 중 명령의 요청에 의해 발생하는 것으로, 가장 대표적인 형태는 감시 프로그램을 호출하는 SVC(SuperVisor Call) 인터럽트가 있다.

- SVC(SuperVisor Call) 인터럽트 : 사용자가 SVC 명령을 써서 의도적으로 호출한 경우


   인터럽트 작동 순서

1. CPU 에게 인터럽트 요청

2. 현재 수행중인 명령을 완료하고 복귀 주소를 저장

3. 인터럽트 인지신호 발생

4. 벡터 인터럽트 처리

5. 리턴에 의한 복귀

※ PSW(Program Status Word)에 현재의 상태를 보관한다.
※ 중앙처리장치는 인터럽트를 요구한 장치를 확인하기 위하여 입출력장치를 폴링한다.
※ 인터럽트를 요구한 장치를 위한 인터럽트 서비스 프로그램을 실행한다.

※ 인터럽트 발생 원인
    - 일방적인 인스트럭션 수행
    - 슈퍼바이저 콜
    - 정전이나 자료 전달의 오류 발생


728x90

댓글