본문 바로가기

정보처리기사

전자계산기 구조 정리

* Pipeline Processor(파이프라인 프로세서)

 1. 여러 개의 명령(Instruction)을 동시에 병렬 처리하는 장치

 2. 분업화의 원리를 이용하여 시간적 병렬 처리를 한다.

 3. 수행 순서  : IF(Instruction Fetch) -> ID(Instruction Decode) -> OF(Operand Fetch) -> EX(Execution)

 4. CPU의 처리속도를 개선하기 위해 사용됨

 5. 연산 속도가 빠름. 같은 연산이 여러 번 반복되면 효율적이지만 그렇지 않으면 구조가 복잡하고 시간이 오래 걸림

 6. 구성

     - 산술 파이프 라인(arithmetic) : 산술 연산 

     - 명령 파이프라인(instruction) : Fetch(인출) + Execute(수행)

 

* Array Processor(배열 프로세서)

 - PE(Processing Element)라 불리는 복수개의 산술, 논리 연산 장치를 갖는 프로세서로

   동기적으로 병렬 처리를 수행, 동시에 같은 기능을 수행하는 처리기

 

* OP-code(Operation Code) = 연산자

 1. 함수 연산 기능

 2. 자료 전달 기능

 3. 제어 기능

 4. 입 출력 기능

 

* Cache Memory(캐시 메모리)

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

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

 3. 메모리 계층 구조에서 가장 빠르다. CPU와 속도가 거의 비슷하다.

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

 5. 최근에는 명령어와 데이터를 따로 분리하여 각각의 캐시 메모리에 저장하는 분리 캐시를 운용하기도 한다.

    분리 캐시를 사용하면 적중률은 떨어지지만 캐시 접근 시 충돌을 방지할 수 있다.

 6. 원하는 정보가 캐시 메모리에 기억되어 있을 때 적중(Hit)되었다고 하고 기억되어 있지 않으면 실패했다고 한다.

 

* 페이지 교체 알고리즘

 1. OPT(OPTimal Replacement, 최적 교체) 

    - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체, 예측해야 하므로 실현 가능성 희박

 2. FIFO

 3. LRU(Least Recently Used)

    - 최근에 가장 오랫동안 사용하지 않은 페이지를 교체

 4. LFU(Lesat Frequently Used)

    - 사용 빈도가 가장 적은 페이지를 교체

 5. NUR(Not Used Recently)

    - 최근에 사용하지 않은 페이지를 교체

 6. SCR(Second Chacne Replacement)

    - 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지 FIFO 단점 보완

 

* 입출력 제어 방식

 0. Interrupt(인터럽트)

     - 입출력을 하기 위해 CPU가 계속 Flag를 검사하지 않고 데이터 전송할 준비가 되면 컴퓨터에게 알려 입출력함

     - 입출력 인터페이스는 CPU에게 인터럽트 신호를 보내 입출력이 있음을 알림

     - CPU가 계속 Flag를 검사하지 않아도 되기 때문에 Programmed I/O보다 효율적

 1. DMA(Direct Memory Access)

     - 입출력 장치와 메모리 사이의 속도 차이를 해결하기 위한 장치

     - 메모리와 입출력 디바이스 사이에 데이터의 주고받음이 직접 행해지는 기법 

     - 입출력 장치가 직접 주기억장치를 접근하여 Data Block을 입출력하는 방식, 입출력 전송이 CPU의 레지스터를

       경유하지 않고 수행

     - CPU는 I/O에 필요한 정보를 DMA 제어기에 알려서 I/O 동작을 개시시킨 후 I/O 동작에 더 이상 간섭하지 않고

       다른 프로그램을 할당하여 수행함

     - 입출력 자료 전송 시 CPU를 거치지 않기 때문에 CPU의 부담 없이 보다 빠른 데이터 전송이 가능

     - DMA의 우선순위는 메모리 참조의 경우 중앙처리장치보다 상대적으로 높음

     - DMA 제어기가 자료 전송을 종료했을 때 인터럽트 신호를 발생시켜 CPU에게 입출력 종료를 알림

     - 중앙처리장치의 입출력 명령을 직접 수행해서 주기억 장치와 입출력 장치 사이에 데이터를 전달

     - Cycle Steal 방식을 이용(DMA 제어기와 CPU가 주기억장치에 동시에 접근할 때 DMA제어기에 우선순위를 줌)

     - Cycle Steal은 한 번에 한 데이터 워드를 전송하고 버스의 제어를 CPU에게 돌려줌, 사이클에 한 주기만 정지

     - Cycle Steal은 CPU가 어떤 명령과 다음 명령을 수행하는 사이를 이용하여 하나의 데이터 워드를 직접 전송함

     - 인터페이스 회로, 주소 레지스터, 워드 카운트 레지스터, 제어 레지스터, 데이터 레지스터로 구성

     

 2. Channel

     - I/O를 위한 특별한 명령어를 I/O 프로세서에게 수행토록 하여 CPU 관여 없이 주기억장치와 입출력 장치 사이에서

      입출력을 제어하는 입출력 전용 프로세서

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

     - DMA 제어기의 한계를 극복하기 위해 고안된 방식

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

     - CPU로부터 입출력 전송을 위한 명령어를 받으면 CPU와는 독립적으로 동작하여 입출력을 완료함

     - 채널은 주기억장치에 기억되어 있는 채널 프로그램의 수행과 자료의 전송을 위하여 주기억장치에 접근함

     - I/O 장치는 제어장치를 통해 채널과 연결됨

     - I/O 채널은 CPU I/O의 명령을 수행하지 않고 I/O 채널 내의 특수목적 명령을 수행함

     - CPU와 인터럽트로 통신함

     - 하나의 제어기로 여러 종류의 I/O 장치들을 공통적으로 제어하는 기능

     - 채널의 종류

        1. Selector Channel : 고속 입출력장치 1개와 입출력하기 위해 사용함, 비교적 속도가 빠른 자기 디스크에 연결

        2. Multiplexer Channel : 저속 입출력장치 여러 개를 동시에 제어하는 채널, 바이트 멀티플렉서라고도 함

        3. Block Multiplexer Channel : 고속 입출력 장치 여러 개를 동시에 제어함

  3. 비동기

      - Strove Pulse(스트로브 펄스)

      - Handshaking(핸드 쉐이킹)

 

* 프로그램된 I/O

 - 데이터를 전송할 때 입출력 버스를 통하여 프로세서와 주변장치 사이에서 이루어지며, 데이터의 전송을

   확인하기 위해서 상태 레지스터를 사용하는 전송 모드

 

* 주소 지정방식의 종류

 1. Implied Mode(암시적 주소 지정방식)

     - 명령 실행에 필요한 데이터의 위치를 지정하지 않고 누산기나 스택의 데이터를 묵시적으로 지정하여 사용

     - 오퍼랜드(실제 데이터)가 없는 명령이나 'Push R1'처럼 오퍼랜드가 1개인 명령어 형식에 사용

 2. Immediate Mode(즉시적(즉치적) 주소 지정방식)

     - 연산 속도가 가장 빠르다.

     - 명령어 자체에 오퍼랜드(실제 데이터)를 내포하고 있는 방식

     - 별도의 기억 장소를 액세스 하지 않고 CPU에서 곧바로 자료를 이용할 수 있어서 실행 속도가 빠름

     - 명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적

 3. Direct Mode(직접 주소 지정방식)

     - 명령어의 주소부가 사용할 자료의 번지를 표현하고 있는 방식

     - 명령어의 주소부에 표현된 주소를 이용하여 실제 데이터가 기억된 장소에 직접 사상시킬 수 있음

     - 주소 부분에 실제 사용할 데이터의 유효 주소를 적기 때문에 주소 길이에 제약을 받는다.

     - 기억 용량이 2^n개의 Word인 메모리 시스템에서 주소를 표현하려면 n비트의 주소부가 필요함

     - 직접 주소 지정방식에서 명령의 오퍼랜드부에 데이터를 가지고 있는 레지스터의 번호를 지정하면 레지스터 모드

     - 명령어의 주소부를 유효 주소로 이용하는 방법

 4. Indirect Mode(간접 주소 지정방식)

     - 명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트수로 나타낼 수 없을 때 사용

     - 명령어의 길이가 짧고 제한되어 있어도 긴 주소에 접근이 가능

     - 명령어 내의 주소부에 실제 데이터가 저장된 장소의 번지를 가진 기억 장소의 번지를 표현하므로 최소한 

       주기억장치에 2번 이상 접근하여 데이터가 있는 기억 장소에 도달함

     - 간접 주소 지정방식에서 명령의 오퍼랜드부에 데이터의 주소를 가지고 있는 레지스터 번호를 지정하면

       레지스터 간접 모드라고 함.

 5. 계산에 의한 주소 지정방식

     - Operrand부와 특정 레지스터의 값이 더해져서 유효 주소를 계산하는 방식

     - 전체 기억장치의 주소를 사용해야 하는 일반적인 주소 지정방식에 비해 적은 수의 비트를 사용, 레지스터 지정

       필드 없이 묵시적으로 레지스터를 지정하여 사용하기 때문에 약식 주소라고 함

 

* 패리티 비트 구하기

 0. 패리티 비트는 1부터 2^n  위치에 배치된다. 1, 2, 4, 8...

 1. 7비트로 만든다.

 2. 1부터 N까지 숫자를 하나씩 채워나간다.

 3. 홀수, 짝수에 따라 오류가 있으면 1 없으면 0으로 채운다.

 4. N번째 비트를 결정할 땐 N번만큼 포함하고 N번을 건너뛴다.

 5. 패리티 비트를 역순으로 만들고 10진수로 변환해서 나온 수의 비트를 바꿔준다.

 

* 마이크로 오퍼레이션

 - ADD와 LDA의 차이는 AC <- 0처럼 초기화하는 게 있다면 LDA(Load to ACC) 없다면 ADD이다.

 

* 전가산기(Full Adder)

 1. 논리식 : 뒷자리에 올라온 자리 올림수를 포함하여 합과 자리 올림수를 구한다.

     - 합계(Sum) = (A (+) B) (+) Ci

     - 자리올림(Carry) = (A (+) B) Ci + AB

 2. 반가산기 2개와 OR 게이트 1개로 이루어져 있다.

 

* 반가산기(Half Adder)

 - 합계(SUM) = A (+) B

 - 자리올림(Carry) = A*B

 

* LOAD, STORE(주기억장치와의 자료 전달)

 - 통상적인 사용자 프로그램을 처리함에 있어서 CPU가 가장 많이 실행하는 인스트럭션(명령)

 - 대부분 명령은 기본적으로 주기억장치에서 명령어를 LOAD 해서 처리한 후 결과를 주기억장치에 STORE(저장)한다.

 

* 0 주소 명령어

 - PUSH/POP 연산을 사용한다.

 

* 3 주소 명령어

 - Operrand 1

 

* 2 주소 명령어

 - 가장 일반적으로 사용되는 명령어 형식

 - Operrand1

 - MOVE 명령이 필요하다.

 

* 1 주소 명령어

 - 누산기

 

* Micro Operation(마이크로 오퍼레이션)

 - Instruction을 수행하기 위해 CPU 내의 레지스터와 플래그가 의미 있는 상태 변환을 하도록 하는 동작이다.

 - 컴퓨터의 모든 명령을 구성하고 있는 몇 가지 종류의 기본 동작이다.

 - 컴퓨터 프로그램에 의한 명령의 수행은 마이크로 오퍼레이션의 수행으로 이루어진다.

 - 레지스터에 저장된 데이터에 의해 이루어지는 동작이다.

 - 마이크로 오퍼레이션은 하나의 Clock 펄스 동안 실행되는 기본 동작으로 모든 마이크로 오퍼레이션은 CPU와

   Clock 펄스에 맞춰 실행된다.

 - 마이크로 오퍼레이션의 순서를 결정하기 위하여 제어 장치가 발생하는 신호를 제어신호라고 한다.

 - 마이크로 오퍼레이션은 Instruction 실행 과정에서 한 단계씩 이루어지는 동작으로, 한 개의 Instruction은

   여러 개의 Micro Operation이 동작되어 실행된다.

 - CPU 내부의 레지스터의 내용을 변경할 수 있지만 연산 레지스터의 내용은 변경할 수 없다.

 

* Micro Cycle Time

 - Micro Operation을 수행하는 데 걸리는 시간

 - 동기 고정식 

    - 모든 Micro Operation의 동작 시간이 같다고 가정하여 CPU clock의 주기를 Micro Cycle Time과 같도록 정의

    - 마이크로 오퍼레이션 동작 시간이 가장 긴 것을 Micro Cycle Time으로 정함

    - 모든 마이크로 오퍼레이션 동작 시간이 비슷할 때 유리

  - 동기 가변식

    - 동작시간이 유사한 마이크로 오퍼레이션들끼리 그룹을 만들어 각 그룹별로 서로 다른 Micro Cycle Time을 정함

    - 동기 고정식에 비해 Cpu 시간 낭비를 줄일 수 있지만 제어기의 구현은 조금 복잡함

    - 마이크로 오퍼레이션들끼리의 시간 차이가 많이 날 때 사용

    - 각 그룹 간 서로 다른 사이클 타임의 동기를 맞추기 위해 사이클 타임을 정수배가 되게 함 

 - 비동기식

    - 서로 다른 Micro Cycle Time을 정의

    - CPU의 시간 낭비는 전혀 없으나 제어기가 매우 복잡해져 실제로는 사용하지 않음

 

* 마이크로 명령 형식

 1. 수평 마이크로 2. 수직 마이크로 3. 나노 명령

 

* 마이크로 명령어

 - 연산 필드 : 연산 필드가 2개인 경우 2개의 마이크로 연산이 동시에 수행됨

 - 조건 필드 : 분기에 사용될 조건 플래그를 지정

 - 주소 필드 : 분기가 발생할 경우 목적지 마이크로 명령어 주소로 사용

 - 분기 필드 : 분기의 종류와 다음에 실행할 마이크로 명령어의 주소를 결정하는 방법을 명시

 

* Virtual Memory(가상 기억장치)

 - 기억 용량이 적은 주기억장치를 마치 큰 용량을 가진 것처럼 사용할 수 있도록 하는 운영체제의 메모리 운영 기법

 - 가상 기억장치의 목적은 주기억장치의 용량 확보이다.

 - 가상 기억장치는 하드웨어적으로 실제로 존재하는 것이 아니고 소프트웨어적인 방법으로 보조기억장치를 

   주기억장치처럼 사용하는 것이다.

 - 사용자 프로그램을 여러 개의 작은 블록으로 나누어서 보조기억장치 상에 보관해 놓고 프로그램 실행 시 필요한 

   부분들만 주기억장치에 적재한다.

 - 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.

 - 가상 기억장치 기법에서 사용하는 보조기억장치는 디스크 같은 DASD 장치여야 한다.

 - 실행 속도가 빠른 것은 아니다.

 

* 순서 논리회로

 - 논리 게이트 외에 메모리 요소와 귀환(Feedback) 기능을 포함한다.

 - 출력은 현재 상태의 입력 상태와 전 상태에 의해 결정, 회로의 동작은 내부 상태와 입력들의 시간 순차에 의해 결정

 - 순서 논리회로의 출력은 입력 상태와 메모리 요소들의 상태에 따라 값이 결정되므로 언제나 일정한 값을 갖지 않음

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

 

* PLA(Programmable Logic Array)

 - ROM과 유사한 성격을 가지며, And Array와 Or Array로 구성됨

 - 프로그램이 가능한 논리 소자로, n개의 입력에 대하여 2n개 이하의 출력을 만들 수 있는 논리회로

 

* 논리회로

 

 

* 기억장치 용량이 1M 워드 1 워드가 32비트 일 때 PC와 MAR과 MBR 구하기

 - 1M = 2^20 이므로 PC와 MAR은 20

 - MBR은 1 워드의 크기

 - PC = 20, MAR = 20, MBR = 32

 - 주소선의 수 = PC의 비트수 = MAR(AR)의 비트 수

 - Data Bus의 수 = MBR(DR)의 비트 수 = IR의 비트 수

 

* 패리티 검사 코드

 - 코드의 오류를 검사하기 위해서 데이터 비트 외에 1비트의 패리티 체크 비트를 추가하는 것으로 1Bit의 오류만 검출

 - Odd Parity -> 홀수 패리티

 - Even Parity -> 짝수 패리티

 

* 해밍 코드

 - 오류를 스스로 검출하여 교정이 가능한 코드

 - 1Bit의 오류만 교정 가능

 - 데이터 비트 외에 에러 검출 및 교정을 위한 잉여 비트가 많이 필요함

 - 해밍 코드 중 1, 2, 4, 8, 16... 2^n번째 비트는 오류 검출을 위한 패리티 비트임

 

* Bandwidth(대역폭, 전송률)

 - 1초 동안 전송되는 최대한의 정보량, 기억장치의 자료 처리 속도를 나타내는 단위

 - 물리적으로 버스의 크기에 영향을 받는다.

 

* CPU와 보조기억장치는 직접 자료 교환이 불가능하다.

 

* 메모리 Interrleaving(인터리빙), Interleaved Memory

 - 여러 개의 독립된 모듈로 이루어진 복수 모듈 메모리와 CPU 간의 주소 버스가 한 개로만 구성되어 있으며

   같은 시각에 CPU로부터 여러 모듈들로 동시에 주소를 전달할 수 없기 때문에 CPU가 각 모듈로 전송할 주소를

   교대로 분산 배치한 후 차례대로 전송하여 여러 모듈을 병행 접근하는 기법

 - 중앙처리장치의 쉬는 시간을 줄일 수 있고, 단위 시간당 수행할 수 있는 명령어의 수를 증가시킬 수 있다.

 - 이 기억장치를 구성하는 모듈의 수만큼의 단어들에 동시 접근이 가능하다.

 - 중앙처리장치의 기억 모듈에 중복적인 데이터 접근을 방지하기 위해서 기억장치 모듈에 순차적으로 처리

 - 중앙처리장치와 기억장치 사이의 실질적인 대역폭을 높일 수 있으므로 캐시, 고속 DAM 전송 등에서 사용됨.

 - 모듈하면 인터리빙

 

* wirte-through

 - 캐시의 쓰기 정책 중 하나로 동작이 이루어질 때마다 캐시 메모리와 주기억장치의 내용을 동시에 갱신하기 때문에

   쓰기 동작에 걸리는 시간이 길다.

 

* DMA 제어기의 한계를 극복하기 위하여 입출력 프로세서(I/O 프로세서)를 별도로 사용한다.

 

* 플립플롭

 - 기억 기능을 가지고 있다.

 - 전원이 공급되고 있는 한, 상태의 변화를 위한 신호가 발생할 때까지 현재의 상태를 그대로 유지하는 논리회로

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

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

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

 - RS : 플립플롭의 기본, S와 R선의 입력을 조절하여 임의의 Bit 값을 그대로 유지시키거나 무조건 0 또는 1의 값 기억

 - D : 클록 펄스가 있을 때 입력하는 값을 그대로 저장

 - JK 

   - RS 플립플롭에서 S=R=1일 때 동작되지 않는 결점을 보완한 플립플롭

   - RS 플립플롭의 입력선 S와 R을 JK FF의 입력선 J와 K로 사용함

   - 모든 플립플롭의 기능을 포합함

 - T : 클록펄스가 있을 때 입력값이 1이면 현상태의 반대 즉 보수가 출력, 0이면 그대로

 - M/S(마스터 슬레이브) 

    - 출력 측의 일부가 입력 측에 FeedBack 되어 유발되는 레이스 현상을 없애기 위해 고안된 플립플롭

    - 2개의 플립플롭으로 구성되는 데, 한쪽 회로가 마스터이고 다른 한쪽이 슬레이브의 위치에 있음

무공 일보이다.

 

* 윈체스터 디스크

 - 자기 디스크에 헤드가 가까울수록 불순물이나 결함에 의한 오류 발생의 위험이 더 커지는 문제점을 해결한 것

 

* Data Flow Machine(데이터 흐름형 컴퓨터)

 - 명령어를 실행할 때 실행할 명령어의 순서와 상관없이 피연산자의 준비 여부에 따라 실행된다.

 - 인스트럭션에의 수행에 필요한 피연산자들이 모두 준비되었을 때 인스트럭션을 수행한다.

 - 이론상으로 최대의 병렬성을 얻을 수 있는 컴퓨터 구조이다.

 

* BUN(branch unconditionally)은 메모리 참조 명령어이다.

 

* RISC와 CISC

   구분   명령어 주소 지정  레지스터 전력 소모 처리 속도    용도
   RISC    적음    간단    많음    적음    빠름    서버
   CISC    많음     복잡    적음    많음    느림 개인용PC

* 다음에 수행할 마이크로 인스트럭션의 주소를 결정할 때 필요한 정보

 1. 인스트럭션 레지스터(IR)

 2. CPU 상태 플래그

 3. 마이크로 인스트럭션에 나타난 주소

 

* 인스트럭션의 성능

 - 수행 시간 / (페치 시간+준비시간)

 

* 산술 파이프라인 구조에서 정규화된 부동 소수점 수의 연산 실행 순서

 - 지수 비교 -> 가수 조정 -> 가수 합산 -> 정규화

 

* CPU의 메이저 스테이트

 1. Fetch Cycle(인출 단계)

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

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

    - 1 Cycle 명령이 아니면 해석된 명령어의 모드 비트에 따라 직접 주소와 간접 주소를 판단한다.

 2. Execute Cycle(실행 단계)

    - Fetch 단계에서 인출하여 해석한 명령어를 실행하는 단계

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

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

 3. Indirect Cycle(간접 단계)

    - 유효 주소를 구하기 위한 단계

    - Fetch 단계에서 해석된 명령어의 주소부가 간접 주소인 경우에 해당

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

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

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

    - Interrupt가 발생할 때만 실행되어 다른 일을 처리하고 돌아오기 때문에 하드웨어로 실현되는 서브 부틴의 호출

 

* Magnetic Tape(자기 테이프)

 - 직접 접근이 불가능하고 오로지 순차 처리만 가능하다.

 - 값이 싸다. 자료의 백업용으로 사용한다. 주소의 개념이 없다. 대용량 저장 매체이다.

 - 자성 물질이 코팅된 얇은 플라스틱 테이프를 동그란 릴에 감아 놓은 형태

 - 테이프 시작과 끝 부분을 알리는 은박지 사이의 정보 저장 부분을 7~9 트랙으로 구성

* Blocking(블로킹)

 - 1개 이상의 논리적 레코드를 묶어서 테이프에 기록하는 방식

 - 하나의 블록을 구성하는 논리 레코드의 개수를 블록화 인수(Blocking Factor / BF)라고 한다.

 - 기억 공간의 낭비가 줄어든다.

 - access Time이 감소한다.

 - 입출력 횟수가 줄어든다.

 

* 제어장치의 비교

    구분    고정배선 제어(하드와이어 제어)  마이크로 프로그래밍
  반응 속도          고속             저속
회로 복잡도          복잡             간단
   경제성          비쌈              쌈
   융통성          없음             있음
    구성       하드웨어          소프트웨어

* 프로그램을 통한 입출력 방식에서 입출력 장치 인터페이스 구성요소

 - 데이터 레지스터, Flag, 장치 번호 디코더

 

* 명령어를 읽을 때 프로그램 카운터의 값이 1 증가한다.

 

* 주소 설계 시 고려 사항

 - 표현의 효율성, 사용의 편리성, 주소 공간과 기억공간의 독립성, 2진법 표기

 

* RAM

           동적 램(DRAM)      정적 램(SRAM)
   구성 소자  콘덴서 플립플롭(쌍안정 논리회로)
      특징 전원이 공급어도 일정시간이 지나면 방전되므로 재충전(Refresh) 필요, 캐패시터에 전하를 저장

전원이 공급되는 동안 기억 내용 유지(방전 현상 X)

    전력 소모               적음            많음
    접근 속도               느림            빠름
  집적도(밀도)               높음            낮음
      가격               저가            고가
      용도  일반적인 주기억장치(RAM)       캐시 메모리

 

* Associative Memory(연관 기억장치)`

 - 기억장치에서 자료를 찾을 때 주소에 접근하지 않고 기억된 정보의 일부분을 이용하여 원하는 정보를 찾음

 - CAM(Content Addressable Memory)이라고도 함

 - 주소에 의한 접근보다 정보 검색이 신속하다.

 - 캐시 메모리나 가상 메모리 관리 기법에서 사용하는 Mapping Table에 이용된다.

 - 외부의 인자와 내용을 비교하기 위한 병렬 판독 논리 회로를 갖고 있기 때문에 비용이 증가한다.

 

* 제어 장치 구현 방식

 1. 상태 플립플롭 제어 방식

 2. PLA 제어 방식                                                             

 3. 마이크로 프로그램 제어 방식 

 

* Cluster

 - 여러 대의 상호 독립적인 동작이 가능한 컴퓨터들이 연결된 전체 컴퓨터들의 집합으로, 전체 컴퓨터들이 상호

   연결되어 협력하면서 하나의 컴퓨터 자원인 것처럼 동작하는 것

 

* 소수 진수 변환

 - 10진수 -> N진수 : 딱 떨어질 때까지 N을 곱해줌

 - N진수 -> 10진수 : 앞에서부터 N^1, N^2... 등으로 나눠줌

 

* 인터럽트의 종류

 - 외부 인터럽트 -> 전압의 변화나 온도 변화에는 반응 X

    1. 전원 이상 인터럽트

    2. 기계 착오 인터럽트

    3. 외부 신호 인터럽트

    4. 입출력 인터럽트

 - 내부 인터럽트 : 잘못된 명령이나 데이터를 사용할 때 발생 Trap이라고도 부름

    1. 프로그램 검사 인터럽트

        - 0으로 나누기

        - Overflow

        - 명령어 잘못 사용

 - 소프트웨어 인터럽트 : 명령의 요청에 의해 발생, 대표적인 형태로 감시 프로그램을 호출

    1. SVC 인터럽트

       - 사용자가 SVC명령을 써서 의도적으로 호출한 경우

       - 복잡한 입출력 처리를 해야 하는 경우

 

* Polling(소프트웨어)

 - 소프트웨어에 의해 인터럽트 우선순위를 판별하는 방식

 - 인터럽트 요청 신호 Flag를 차례로 검사하여 인터럽트의 원인을 판별

 - 하드웨어 방식에 비해 처리시간 및 반응시간이 늦다.

 - 하드웨어 방식에 비해 값이 싸고 융통성이 있다.

 

* Vectored Interrupt(하드웨어)

 - 하드웨어 신호에 의하여 수행되는 서브루틴

 - 장치 판별을 위한 별도의 프로그램 루틴이 없어서 응답속도 빠름 

 - 회로가 복잡하고 융통성이 없으며 별도의 하드웨어가 필요해서 비경제적

 - 인터럽트 백터

    - 중앙처리장치는 인터럽트가 발생한 장치 번호를 받은 후에는 해당되는 인터럽트 서비스 루틴으로 분기하게 된다.

    - 이때 기억장치 내의 특정한 곳에는 인터럽트 취급 루틴으로 분기하는 명령어들만을 기억하는 영역이 있는데

      이를 인터럽트 벡터라고 한다.

    - 인터럽트 벡터에는 인터럽트가 발생했을 때 프로세서의 인터럽트 서비스가 특정의 장소로 점프하도록 점프할

      분기 번지가 기억되어 있다. 

 - 종류

    - 직렬(Serial) 우선순위 = 데이지 체인(Daisy-Chain)

    - 병렬(Parallel) 우선순위 

 

 

* 기억장치의 계층 구조상 접근 속도

 - 레지스터 > 캐시 > RAM > ROM > 자기 코어 > 자기 디스크 > 자기 테이프

 

* 디지털 IC의 성능 평가 요소

 - 전파 지연 시간, 전력 소모, Fan Out, 잡음 허용치

 

* Mapping process(매핑 프로세스 = 매핑 함수)

 - 주기억장치의 한 개의 블록을 캐시 라인에 배정하는 규칙

 - 구성

    1. Direct Mapping(직접 맵핑)

    2. Accociative Mapping(연관 매핑)

    3. Set-associative Mapping

 

* 버스사용 우선수위를 계속 변경시키는 가변 우선순위 방식 알고리즘

 - 회전 우선순위, 임의 우선순위, 동등 우선순위, 최소 - 최근 사용

 

* 2의 보수 -> -2^n-1 ~ +2^n-1 +1 , 1의 보수 -> -2^n-1 -1 ~ +2^n-1 -1 

 

* 서로 다른 정보의 수는 표현할 수 있는 정보중 가장 큰 수 -> 0부터 시작하니까 -1 

  이 수를 2진수로 표현했을 때 몇 개의 비트가 필요한가. (몇 자리 인가)

 

* Shift연산 시 비게 되는 비트를 패딩 비트라고 한다. 기본적으로 0으로 채워지지만 1로 채워지는 세 가지 경우가 있다

 1. Shift Left가 1의 보수법일 때

 2. Shift Right가 1의 보수법일 때

 3. Shift Right가 2의 보수법일 때

 - 산술 이동에서 수치 표기법에 대한 특별한 언급이 없다면 2의 보수법이다.

 - 오른쪽 시프트 시 밀려나는 비트가 1이면 절단 현상이 발생한다.

 

* 채널 명령어(CCW)로 명령 코드, 데이터 주소, 데이터 크기, 플래그를 알 수 있다.

 

* SSD 정보 저장 방식

 1. SLC(Single Level Cell) -> 1비트

 2. MLC(Multi Level Cell) -> 2비트

 3. TLC(Triple Level Cell) -> 3비트

 

* CPLD(Complex Programmable Logic Device)

 - 여러 개의 LAB와 연결선인 PIA로 구성되며 빠른 성능이나 정확한 타이밍의 예측이 필요로 하는 곳에서 사용

 

* 메모리 IC에 필요한 Pin(핀)의 수

 - address -> 워드의 개수 -> 2^n으로 변할 때 n

 - data -> 워드의 크기

 - chip select bit : 선택할지 말지 결정하는 비트 1  -> +1 하면 된다.

 

* 논리 연산

 - Selective - Set 연산은 OR 연산을 말한다. 1과 OR(Set)시켜서 삽입, 세트 시킨다.

 - MASK 연산은 AND 연산을 말한다. 0과 AND 해서 삭제시킨다.

 

* 명령을 처리하는 과정

 - 인스트럭션 페치 -> 인스트럭션 디코딩 -> 오퍼랜드 페치 -> 실행 -> 인터럽트 조사

 - 인터럽트 조사는 항상 실행 다음에 한다.

 

* 크로스 어셈블러

 - 현재 사용하는 컴퓨터와는 다른 명령 형태로 동작하는 컴퓨터에서 어셈블 할 때 사용되는 어셈블러

 - 다른 컴퓨터를 이용하여 어셈블리 언어의 프로그램을 이식(Proting)하고자 하는 마이크로프로세서의 기계어로 번역

 

* 상대 주소 구하기

 - H는 16진수이다.

 - 현재 주소 + 명령어의 길이 -> 다음 주소

 - 다음 주소 - 명령어에 지정된 변위 값

 

* Gray Code(그레이 코드)

 - 대표적인 비가중 코드로 인접한 코드의 비트가 1비트만 변하여 산술 연산에 적합하다.

 - 그레이 코드 자체로 연산이 불가능

 - 2진수 -> 그레이 : 첫 번째 비트는 그대로 내리고 왼쪽의 수와 XOR 연산한다.

 - 그레이 -> 2진수 : 첫 번째 비트는 그대로 내리고 구해진 수와 XOR 연산한다.

 

* 주요 레지스터 -> 플립플롭이나 Latch(레치)들을 병렬로 연결하여 구성

 1. 프로그램 카운터(프로그램 계수기, PC)

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

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

 2. 명령 레지스터(IR)

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

 3. 누산기

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

 4. 상태 레지스터(PSWR, 플래그 레지스터, Status)

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

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

     - 프로그램 제어와 관계가 있다.

 5. 메모리 주소 레지스터(MAR)

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

 6. 메모리 버퍼 레지스터(MBR)

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

 7. 인덱스 레지스터

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

     - 사용자가 내용을 변경할 수 있음

 8. 데이터 레지스터

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

 9. 시프트 레지스터

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

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

 10. 메이저 스테이터스 레지스터

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

 

* RAID-5는 RAID-4의 패리티 디스크의 액세스 집중 문제를 해결하기 위해 개발됨

 

* Multi-Processor(다중 처리기)

 - 하나의 시스템에 여러 개의 프로세서를 연결하여 작업을 처리

 - 프로세서간 상호작용이 밀접한 강결합 시스템

 - 여러 작업을 동시에 처리, 실행 시간 감소, 효율 상승

 - 하나의 복합적인 운영체제에 의하여 전체 시스템이 제어

 - 프로세서 하나가 고장 나도 다른 프로세서들에 의해 극복이 가능

 - 각 프로세서는 자체 계산 능력을 가지고 있고 프로세서나 주변 장치 등을 공용한다.

 

* 인터럽트 작동 순서

 1. CPU에게 인터럽트 요청

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

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

 4. 백터 인터럽트 처리

 5. 리턴에 의한 복귀

 - 실행 중인 작업을 중지하고 인터럽트를 처리하고 돌아와서 원래의 작업을 수행하는 인터럽트의 특징 기억

 - 중지 후 처리 후 복귀 기억

 

* MFLOPS (메가플롭스)

 - 1초간에 실행되는 부동소수점 연산의 수를 100만 단위로 하여 나타낸 수

 - 프로그램 내의 부동소수점 연산 개수 / 수행 시간 X 10^6

 

* IEEE 754 부동 소수점 표현

 - Sign(부호), Biased Exponent(지수), Fraction(가수부)

 - Sign : 0은 양수 1은 음수

 - Biased Exponenet(지수) : 정규화시켜 분리한 지수값을 127 Bias 법으로 표현(8Bit)

 - Fraction(가수) : 정규화시켜 분리한 소수 이하의 자리를 표현하고 빈자리는 0으로 채운다(23Bit) 

 - 총 32비트 2^-127 ~ 2^128

 

* instruction(명령어) 설계 시 고려사항

 - 연산자의 수와 종류

 - 주소 지정 방식

 - 데이터 구조(워드의 크기)

 - 인스트럭션 세트의 효율성 높이기 위한 고려사항 : 기억 공간, 사용 빈도, 주소 지정 방식, 주기억장치 밴드폭

 

* 디코더 & 인코더 & 멀티플렉서

 - 디코더 : n개의 입력 2^n개의 출력

 - 인코더 : 2^n개의 입력 n개의 출력

 - 멀티플렉서 : 하나의 입력선 여러개의 출력

 - 디멀티플렉서 : 여러개의 입력선 하나의 출력

 

* 병렬 가산기(Parellel adder)에서 더하는 비트열이 모두 1이고 올림수(C)가 1일 경우 결과가 그대로이다.

 

* Blu-ray

 - 고선명(HD) 비디오 데이터를 저장하기 위해 짧은 파장을 갖는 레이저를 사용하는 광 기록방식 저장 매체

 

* 인터럽트 요청

 - 중앙처리장치는 인터럽트를 요구한 장치를 확인하기 위하여 입출력 장치를 폴링 한다.

 - PSW에 현재 상태를 보관한다.

 - 인터럽트 서비스 프로그램은 실행 중이어도 현재 처리하는 인터럽트보다 우선순위가 높은 인터럽트 발생 시 먼저 처리

 

* PSW(Program Status Word)

 - CPU의 상태를 나타내는 정보를 가지고, 독립된 레지스터로 구성된다.

 

* 동등 우선순위 : 동등한 우선순위를 가지므로 FIFO 알고리즘을 사용

* 회전 우선순위 : 동작이 끝날 때마다 모든 마스터들의 우선순위가 한 단계씩 낮아진다.

 

* 가상 메모리를 사용한 컴퓨터에서 Page Fault가 발생했을 때

 - 요구된 page가 주기억장치로 옮겨질 때까지 프로그램 수행이 중단된다.

 

* 자기 코어 

 - 전류 일치 기술에 의하여 기억 장소를 선별

 - 데이터를 읽으면 읽은 내용이 지워지는 파괴 메모리(DRO Memory)이므로, 내용을 읽은 후 지워진 내용을 기록하기

   위한 재저장 메모리가 필요

 - 중심을 통과하는 전선에 흐르는 전류의 방향에 따라 1 혹은 0의 값을 갖는다.

 - 자기 코어는 부피에 비해 용량이 적고 가격이 비싸 현재는 거의 사용하지 않는다.

 - 저장을 위해 1bit마다 하나의 코어 플레인이 필요하다.

 

* 명령어의 구성 중 주소(Operand) 부

 - 기억장치의 주소, 레지스터 번호, 사용할 데이터

 - 연산자는 연산자부에 표시된다.

 

* Demultiplexer(디멀티플렉서)

 - 1개의 Input Line과 n개의 Selection Line에 의해 2^n개의 output line 중 하나를 선택한다.

 

* 전달 기능의 인스트럭션 사용빈도 구하기

 - 메모리에 접근 횟수가 많을수록 사용 빈도가 낮다.

 

* 8진수의 7의 보수 구하기

 - 777로 만들기 위해 몇을 더해야 하는지 구하기 563이면 214를 더해야 함.

 

* Excess-3

 - 대표적인 자기 보수 코드이다.

 - 보수를 이용한 감산이 유리하다.

 - 자기 보수와 보수를 이용한 감산의 이점으로 계산기에 BCD코드 대신에 Excess-3 코드를 사용한다.

 - 모든 비트가 동시에 0이 되는 경우가 없으며 비가중치 코드이다.

 - +3을한 후 2진수로 변환

 

* Carry Lock Ahead Adder

 - 병렬 가산기를 구성하는 각각의 전가산기 출력 캐리를 미리 예측 및 처리하여 리플캐리 지연을 제거한 가산기

 

* 리플캐리를 전파할 때 발생하는 전파 지연(Propagation Delay)

 - 논리회로에서 입력된 신호가 출력으로 전파되는 데 걸리는 평균 전이 지연시간

 

* 두 데이터를 비교하는 연산은 OXR이다.

 

* 수직적 마이크로 명령어

 - 마이크로 명령어의 비트 수가 감소된다.

 - 제어 기억장치의 용량을 줄일 수 있다.

 - 마이크로 명령어의 코드화 된 비트들을 해독하기 위한 지연이 발생한다.

 

* 수평적 마이크로 명령어

 - 마이크로 명령어의 각 비트가 각 제어신호에 대응되도록 하는 방식 

 

* 제어 장치 모델에서 제어 장치로 입력되는 것

 - 클록, 명령어 레지스터, 플래그

 

* 컴퓨터 성능을 측정하는 단위 MIPS이다.

 

* 아스키코드의 비트 구성에서 존 비트는 3비트, 수(digit)비트 4비트

 

* 병렬 처리 시의 문제점

 - 분할의 문제, 스케줄링의 문제, 동기화의 문제

 

* 강결합(공유-기억장치 다중프로세서)에서 사용되는 상호 연결 구조

 - 버스, 크로스바 스위치, 다단계 상호연결망

 

* 응용 프로그램이 직접 접근할 수 없는 레지스터

 - 세그먼트 레지스터, 포인트 레지스터

 

* Converting

 - 데이터를 모은 다음 데이터들을 메시지 버퍼에 넣고 특정 수신기나 프로그래밍 인터페이스에 맞도록 데이터를

   조직화하거나 미리 정해진 다른 형식으로 변환하는 과정

 * Marshalling

 - 한 객체의 메모리에서의 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 것

 

* 직접 매핑 사용시 캐시 기억 장치에서 적중률이 낮아질 수 있다.

 

* DDR4

 - 하드디스크 드라이브와 컴퓨터 메인보드 간의 연결에 사용되는 인터페이스 방식

'정보처리기사' 카테고리의 다른 글

정보처리기사 필기 합격 후기  (0) 2019.09.01
데이터베이스 정리  (0) 2019.07.31
운영체제 정리  (0) 2019.07.31
소프트웨어 공학 정리  (2) 2019.07.31
데이터 통신 정리  (0) 2019.07.31