9장 병렬프로세서

Standard

상호연결 네트워크


– 멀티프로세서 시스템, 멀티프로세서-멀티메모리 시스템 그리고 배열 프로세서 등에서 중요한 역할을 담당하는 하드웨어는 [상호 연결네트워크]



상호 연결네트워크 개념



※ 기능


– 프로세서들 사이의 제어신호 전송


– 서로 다른 메모리 뱅크를 갖고 있는 CPU와 입출력 프로세서들 사이의 연결


– 현대의 대부분의 대형컴퓨터들은 고성능 다단계 크로스바 스위치 사용.


– 프로세서들 사이의 메시지 전송


– 전송을 위한 데이터 재조직



버스


1) 단일 버스(single Bus) 구조


2) 다중버스 구조


병렬 컴퓨터



병렬 컴퓨터 : CPU와 메모리, 입출력 장치 등을 포함한 여러 개의 시스템들을 하나로 묶어서 구성하여 마치 하나처럼 사용할 수 있는 컴퓨터를 말한다.



* 병렬 컴퓨터 분류


MISD(Multiple Instruction stream, Single Date stream) 구조 : 다수 명령어 스트림, 단일 데이터 스트림 시스템



SISD


– 제어장치, 처리장치, 메모리장치를 가지는 단일 프로세서 컴퓨터를 의미하며 단일 명령어 스트림을 순차적으로 처리하는 단일 데이터 스트림 시스템이다.



SIMD


SIMD(Single Instrution stream, Multiple Date stream) : 하나의 명령어 스트림이 다수의 프로세서에 전달



※ SIMD 연산


– 하드웨어를 초과하는 양의 데이터를 분산처리


– 많은 다른 종류의 데이터를 병렬처리


– 모든 데이터의 요소들을 같은 계산으로 수행



※ SIMD 구조의 종류


– 연관(associative) 프로세서, 배열 프로세서



MIMD


– 여러 프로그램을 동시에 수행하는 능력을 가진 컴퓨터이다.



1) 멀티프로세서 시트셈의 요구


– 초기화 : 프로세서는 항상 다른 프로세서가 불어 날수 있도록 예를 들면 생성과 활성화가 되어야 한다.


– 동기화 : 병렬 컴퓨터에서 프로그래밍 시에 처리기들이 전체 프로그램 내에서 특정 처리기만을 접근하지 못하도록 처리 순서를 정하는 것이다.


– 배제 : 프로세서는 항상 자원, 즉 다른 코드나 데이터를 확실히 독점해야 한다, 그래야만 다른 프로세서들이 벌써 획득되어 있는 자원들을 열어 볼 수 없다.


– 통신 : 메시지를 받고 안 받고를 나타내는 신호 메시지든지 아니면 방송 메시지들인지 이런 모든 것들은 통신설비에게 많은 도움을 주고 있다.


– 중단 : 프로세서는 다른 프로세서나 그 자체 내에서 중단 할 수 있어야하고 사용된 자원들은 다시 사용될 수 있도록 자유로운 상태가 되어야 한다.



캐시 응집


– 모든 캐시로 방송해 주는 기능이 가장 중요하다. 


 



8장 CPU 설계와 구조

Standard

CISC와 RISC 구조


– 복합형 명령어 셋 컴퓨터(CISC; Complex Instruction Set Computer)


– 축소형 명령어 셋 컴퓨터(RISC; Reduced Instruction Set Computer)


– 모두 노이만형 컴퓨터 구조 형태이다.



CPU 설계 변천과정


– 1970년대부터 논리회로에 고밀도 집적회로가 사용되면서 크기와 속도 면에서 비약적인 발전이 시작되었다.



※ 의미 갭 : 기계어와 사용자들이 컴퓨터 프로그램을 작성하는데 사용하는 프로그래밍 언어와의 차이를 정의



프로그램 수행



※ 실행 시간 = IC * CPI * CT



– IC(Instruction Count)는 명령어의 객수


– CPI(Clocks Per Instruction)는 각 명령어당 평균 연상 단계의 수


– CT(Click Times)는 하나의 연산 단계를 수행하는데 걸리는 시간 = 클럭 펄스의 사이클 시간



CISC 구조


– 복합적이며 고기능의 명령어 셋을 가진 컴퓨터


– 모든 고급 언어 명령어들에 대해 각각 하나의 기계어 명령어가 일대일로 대응되게 하여 컴파일 동작을 간소화 시켜 전반적인 컴퓨터의 성능을 향상


장점 : CISC 구조는 컴파일 과정이 쉽고 호환성이 좋은


단점 : 많은 하드웨어가 필요하고 속도가 느린 것



RISC 출현 배경


1) 고급 프로그래밍 언어 문장의 상대적인 동적 수행 빈도


2) 명령어의 상대적인 동적 수행 빈도


3) 오퍼랜드



RISC 특성


1) 간단한 명령어 셋 구성


2) LOAD/STORE 명령어 구조를 지니고 있다.


3) 파이프라인 하드웨어 구조 사용


4) 대량의 레지스터 셋과 메모리 계층의 다단계화


5) 캐시 메모리 역할 증대


6) 부동 소숫점 보조 프로세서(Floating-Point Coprocessor) 이용


7) 컴파일러 최적화


8) 높은 병렬성을 위한 고도의 파이프라인 수행 장치



CISC와 RISC 비교



– 단일 사이클 연산 : CISC는 한 명령어를 실행하기 위해서 다수의 클럭 주기를 필요로 하나 RISC는 대부분 명령어의 실행이 즉 하나의 명령은 한 개의 클럭 사이클에 이루어진다.


– 하드 배선(Hardwired) 제어장치 이용


CISC는 마이크로 프로그래밍 제어 방식을 사용하나 RISC는 하드웨어에 의한 명령어 해석 즉, 논리 회로를 이용하여 단일 사이클 시간 내에서 하나의 명령을 실행하기 위해 하드 배선논리에 의한 제어를 통해 제어논리를 단순화한다.


– 소수명령 형태


CISC는 다양한 데이터의 형태와 주소 기법을 채택하나 RISC는 상대적으로 적은 수의 명령어와 주소 지정 양식으로 명령해석에 요구되는 시간을 단축시킨다.


– 명령어 형식 고정


CISC는 명령어의 크기가 1바이트에서 17바이트 정도로 가변적이나 RISC는 명령어의 단순 해석을 위한 고정된 명령어 형식을 사용하여 디코딩의 간단 단순화를 도모한다


VLIW


 


VLIW 구조


 


[장점]


– 병렬 연산의 동기화가 컴파일 시간에 수행되므로 프로세서의 효율성이 향상된다.


– 프로그램의 길이가 짧아지게 되므로 실행시간이 감소하게 된다.


– 명령어 병렬처리, 데이터 이동이 컴파일 시간에 완전히 명시되어 실시간 자원 스케줄링이 간단하다.


 


[문제점]


– 지능적인 컴파일러가 없으면 불가능하다.


– 현재의 X86 또는 RISC 프로그램과 호환성이 없다.


– 새로운 컴파일러가 필요하다.


파이프라인



명령어 실행주기


1) 클럭속도


2) 데이터 폭



파이프라인 개념


– 총 1시간 30분이 소요된다고 가정


– 소요시간은 6시간


– 총 세탁 처리 시간은 3.5시간



명령어 파이프라인


– 클럭의 속도는 인출과 실행의 동작이 각각 한 개의 클럭 사이클 내에 완료될 수 있도록 가정


– 명령어 실행 속도는 위 순차 동작에 비해 두 배 빨라지게 된다.



※ 한사이클에 한단계


Ifetch : 명령어가 저장된 메모리로부터 명령어 인출


Reg/Dec : 원시 오퍼랜드(레지스터 값) 인출과 명령어(제어 정보) 해석


Exec : 산술 연산의 수행과 주소 계산


Mem : 메모리 연산(Load, Store) 즉 데이터 메모리로부터 데이터 읽어오기


Wr : 수행 결과의 저장 단계로 레지스터 파일에 데이터 저장 


 



7장 입력과 출력

Standard

입출력 개요



– 컴퓨터 시스템의 모든 입출력 장치(물리적 입출력 장치포함)와 입출력 모듈 즉 입출력 인터페이스 장치를 포함


– 물리적 입출력 장치 : 프린터 콘솔 등 실제로 입출력을 수행하는 장치


– 입출력 모듈 : 메모리나 CPU 레지스터 등 내부 저장장치와 물리적(외부) 입출력 장치 사이의 2진 정보를 정송하기 위한 방법을 제공하며 이러한 장치의 특성으로부터 CPU를 독립시키고 물리적 입출력장치를 제어한다.



입출력 장치에의 연결



1) 입출력 버스


– 입출력 버스를 이용하여 조정


2) 메모리 – 사상 입출력(memory-mapped I/O)


– 입출력 장치들과 버스구조를 메모리에 연결하는 방법이다.


3) 직접 기억장치 접근(DMA; Direct Memory Access)


– CPU의 도움 없이 메인 메모리와 외부 장치 사이에서 직접 데이터 블록이 전송될 수 있도록 특수한 제어 장치를 두는 것이다.



메모리 – 사상 입출력


– 입출력 장치레 기억장치 주소 공간의 특정주소를 부여함으로써 입출력 장치를 기억장치와 구분하여 기억장치에 접근하는 방식. 


입출력 방법



※ 입출력 모듈의 구분


– CPU 제어 입출력


   프로그램 제어 입출력


   다중포트(Multiported) 저장 시스템


   인터럽트 기반 입출력 – 외부 입력 제어


– DMA 입출력


– 채널 입출력



CPU 제어 입출력



1) 프로그램 제어 입출력


– CPU 내부에 있는 입출력 데이터와 주소 레지스터를 입출력 모듈과 연결하는 형태



① CPU는 ‘INPUT 24’ 입력 명령어를 실행


② 주소 24가 입출력 주소 레지스터에 복사


③ 주소 24는 키보드 입출력 모듈에 의해 인식


④ 읽기/쓰기 제어선은 명령어가 입력(INPUT)임을 지시한다.



※ 문제점


① 다수의 프로그램 명령어들을 실행해야 하기 때문에 프로그램 제어 입출력에서는 상당한 오버헤드가 발생


② 데이터 전송은 CPU와는 무관한고정된 주파수를 갖는 클럭에 의해서 제어



※ CPU 이용률을 증가시키는 방법


가. 다중프로그래밍 운영체제


나. 다중포트(Multiported) 저장 시스템


다. 입출력 프로세서



2)다중포트 저장 시스템



※ 메모리 액세스를 승인하려는 입출력 장치 선택 방법


① 장치 번호 고정


② 라운드 로빈(round robin)


③ 다중 송신시간



DMA 입출력


직접 메모리 접근(DMA; Direct-Memory-Access) : 하드웨어 장치가 CPU 도움 없이 메인 메모리로부터 직접적으로 제어하여 데이터 전송이 이루어지는 형태



– 임의의 기계 명령어와 주소 지정 방식이 입출력 장치를 지정하는데 사용될 수 있기 때문에, 기억장치 사상 입출력 방식은 많은 유연성을 제공


– 대부분의 경우, 기억장치 주소공간 중 연속된 일부분을 입출력 장치들에 할당


– CPU는 입출력 전송에 참여하지 않아도 되므로 CPU 성능을 향상


– 고속디스크에서의 데이터 전송에 적합



※ DMA 구현을 위한 조건


– 입출력 인터페이스와 메모리 연결 방법


– 각각 입출력 장치들에 연결된 입출력 모듈은 메모리를 읽고 쓰는 능력 보유


– CPU와 입출력 장치들과의 충돌 방지 방법 제공



※ DMA 제어기와 채널의 연산형태


1 사이클 DMA


– 전송하여는 각각 항목에 대해 버스 사용을 요구


– CPU를 포함한 다른 장치들은 전송하는 동안 버스를 액세스 할 수 있다.



② 버스트(burst) 모드 DMA


– DMA 제어기는 완전한 블록 전송이 끝날 때 까지 버스를 양도하지 않는다.



* DMA 채널


– 사이클-스틸을 사용하여 직접 기억장치 접근을 수행


– 각 입출력 장치는 제어장치를 통해 채널과 연결



1) 채널 프로그램


– 입출력연산을 종료하는 채널 커맨드들의 순서



2) 채널 하드웨어


테이터-주소 레지스터


– 전송될 바이트 또는 워드의 메인 메모리 주소를 보관한다.


카운더


– 채널로 전송될 바이트의 합계, 이미 전송된 바이트의 수 그리고 버퍼들을 보관


채널


– 변환(assemble)하거나 변환하지 않은 데이터를 보관



3) 채널의 종류


셀렉터(selector) 채널 :


– 자기 디스크와 같은 고속 장치들은 고속으로 데이터 전송이 이루어지기 때문에 멀티플렉서 채널을 사용하여 다른 장치들과 다중화가 쉽지 않다. 이런 경우 한번에 하나씩 처리하는 전용 채널로 구성하여 해결할 수 있다.



블록(block) 멀티플렉서 채널 :


– 멀티 플렉서 채널과 셀렉터 채널의 특징을 결합한 것


– 블록 단위에 기초하여 다수의 고속 입출력 작업을 다중화 할 수 있다.


– 버스트 방식에서만 동작하는 고속 멀티플렉서 채널


– 셀렉터 채널 대신에 블록 멀티플렉서 채널을 사용할 때의 이점은 자기 디스크나 테이프와 같은 입출력 장치들의 동작 특성에서 찾아볼 수 있다.



주변기기 처리장치



– 주변기기 처리장치 프로그램은 컴퓨터의 메인 메모리보다는 주변기기 처리장치가 갖고 있는 메모리에 저장


– 주변기기 처리장치 명령어 셋은 좀 더 일반적이고 완전하다


인터럽트



– 입출격 장치나 컴퓨터 내의 프로그램으로 부터 CPU에게 보내는 하드웨어 신호로서 컴퓨터는 이때 실행중인 일을 멈추고 다음에 다른 프로그램의 실행을 시작


– 기본적으로 단일 컴퓨터는 오직 한번에 한 개의 컴퓨터 명령어만을 수행할 수 있으나 인터럽트 신호가 있기 때문에 다른 프로그램이나 명령문을 수행할 수 있는 순서를 가질 수 있다.



인터럽트 처리



1) 인터럽트 요청 회선의 연결


– 단일 회선


– 다중 회선



벡터화된 인터럽트


– 인터럽트를 요청한 장치가 CPU에 직접 자신을 알려 CPU가 즉시 해당 인터럽트 서비스 루틴을 실행할 수 있는 방벙을 ‘벡터화된 인터럽트’라고 부른다.



인터럽트 유형과 사용



1) 외부 인터럽트


– 정전이 발생한 경우 또는 입출력 장치가 데이터 전송을 요청할 때 그리고 프로그램에 할당된 시간의 초과(타이밍장치) 등 외부적 요인에 의해 발생되는 경우



2) 내부 인터럽트


– 불법적인 명령어나 데이터 사용, 또는 존재하지 않는 명령어를 요구하는 경우, 데이터 오류 등 정상적인 처리를 수행할 수 없는 경우와 특권명령어(halt 등)를 사용하는 경우



3) 소프트웨어 인터럽트


– 위 하드웨어적인 인터럽트와 비슷한 역할을 수행하는 CPU 명령어 실행에 의해 발생하는 경우


 


6장 기억장치

Standard

메모리 시스템



주소영역 



– 데이터는 1개의 메모리 셀에 저장되거나 큰 데이터는 여러 개의 셀에 교차하여 저장


– 각각의 셀은 개별적으로 읽거나 쓰여진다.



CPU-메모리 인터페이스



– 데이터버스는 데이터를 위한 입력과 출력버스를 지원하고 있으며 어떤 칩은 입력과 출력버스를 분리


– 주소버스는 RAM칩에 주소를 운송하고 있으며 제어버스는 연산을 제어한다. 이러한 RAM칩을 이용하여 메모리를 구성한다.



– 메모리 액세스시간(memory access time) : 기억장치 속도는 동작 시작과 그 동작의 종료 사이에 경과한 시간 즉 명령 발생 후부터 목표의 번지를 검색하여 데이터의 기록(판독)을 시작할 때까지의 시간



– 메모리 사이클 시간(memory cycle tiom) : 두 번의 연속적인 메모리 동작 사이에 필요한 최소 지연 시간 즉 두 번의 연속적인 판독 동작 사이의 시간



메모리 참조



※ 메모리 계층구조를 이용할 수 있는 이유


– 시간 지역성(Temporal Locality)


1. 만약 어떤 항목이 참조되었다면 다시 참조되는 경향이 있다.


2. 즉 최초에 참조된 항목은 가까운 미래에도 계속 참조될 가능성이 높다.


  예) 순환, 재사용(reuse), 서브프로그램, 스택, 계산이나 집계의 변수



– 공간 지역성(Spatial Locality)


1. 만약 어떤 항목이 참조되었다면 그 항목이 갖고 있는 인접 주소가 다시 가까운 장래에 참조될 수 있다.


  예) 배열 액세스, 직선코드(straight-line code)


 


메모리 형태



ROM(Read Only Memory)


– 저장된 내용을 읽기만 할 수 있는 메모리


– 데이터와 프로그램은 전기가 공급되지 않더라도 내용이 보존되는 영구적인 성격



1) 기능


– 기억된 정보를 읽을 수만 있는 기억 장치.


– 메인 메모리의 일부로 사용.


– 항상 같은 정보를 보관할 필요가 있는 부분에 사용.



2) 종류 : Mask ROM, PROM, EPROM, PLA, EEPROM, 플래시 메모리



읽기/쓰기 메모리 – RAM



가. SRAM


– 컴퓨터의 캐시 메모리



나. DRAM


– 재생(refresh), 대용량 메모리, 일반적인 종류의 RAM



2) 휘발성과 비 휘발성


– 휘방성 메모리 : SRAM, DRAM


-비 휘발성 메모리 : 자기 코어, 플래시, EEPROM, EPROM, ROM



메모리의 논리적 구조의 특성



1) 주소 메모리


– 읽기 또는 쓰기 셀을 선택하기 위하여 주소를 사용


2) 연상 메모리


– 읽기나 쓰기 셀을 선택하기 위하여 메모리 워드의 일부인 내용을 사용


3) 순차 액세스


– 자기 테이프


메인 메모리 시스템



– 정적 또는 동적 RAM으로 구성


– 컴퓨터 내부에 있기 때문에 ‘내부 기억장치’라고 부름


– CPU와 직접 데이터를 주고받는다.


– 다중프로그래밍의 중요한 구조적 특성 :①프로그램 재할당, ②메모리 보호, ③연산의 특권모드, ④시간 인터럽터



프로그램 재할당



– 재할당에서 프로그램은 프로그램이 사용한 논리적 주소에서 재할당 오프셋(Ro)이라고 불리는 다른 상수의 물리적 주소에 적재된다.


– 프로그램 시작의 논리적 주소는 0이고 재하당 오프셋은 재할당 주소(RA)와 같다.


– 운영체제는 RO 상수 값에 의해 메모리에 프로그램을 재할당 한다 


캐시 기억장치



느린 메모리에 의해 발생하는 성능저하를 감소시킬 수 있는 하나의 방법이 메모리 시스템에 캐시 메모리를 결합



개념과 동작


– 캐시메모리 : 빠른 속도를 처리되는 CPU와 상대적으로 느린 속도를 처리되는 메인 메모리 사이에서 자료나 정보를 저장하는 고속 버퍼



1) 참조의 지역성


– 자주 참조되는 프로그램과 데이터가 속도가 빠른 조그만 메모리(캐시 메모리로 구현)에 저장된다면 평균 액세스 시간이 감소되어 시스템 성능이 향상된다.



캐시기록 동작



1) 바로쓰기(write-through) 방식


– 가장 간단하고 일반적인 방법으로 쓰기 동작이 이루어질 때마다 동시에 캐시메모리와 메인 메모리를 갱신한다.



2) 쓰기지연(write-back) 방식


– 쓰기동작 동안 캐시의 내용만 표시하였다가 나중에 블록이 다른 블록으로 대체 될 때 메인 메모리에 기록 복사하는 방법



메모리 필드와 주소 번역


– 32비트 주소는 2개의 필드 블록필드(26비트)와 워드필드(6비트)로 나누어진다.


– 워드필드는 블록필드에서 지정한 블록의 오프셋을 나타낸다.



캐시 구조와 조직


캐시는 2개의 중요한 서브시스템과 제어기로 구성된다.



– 태그 서브시스템(TRAM) : 요청된 데이터의 매치 여부를 결정하고 캐시에 저장된 데이터의 주소를 보관


– 메모리 서브시스템(SRAM) : 데이터를 전송 또는 보관하며 SRAM의 크기는 캐시의 크기에 의해서 결정된다.


– 캐시 제어기 : SRAM과 TRAM의 정보 및 기록 수정보완



1) 연상 캐시


– 메인메모리 블록을 임의의 캐시 블록에 적재할 수 있는 가장 빠르고 융통성 있는 캐시구조이다.



3) 셋(Set)-연상 캐시


– 셋 별로 두 블록을 가지는 캐시



캐시 성능 평가



캐시를 이용할 경우 CPU의 유효 기억장치 액세르 시간


h = 적증율


유효 액세스 시간 = (h x 캐시 액세스 시간) + ((1-h) x 메인 메모리 액세스 시간)



평균 액세스 시간


= (0.9 * 30) + (0.1 * 100) -> 37ns 


가사 메모리


 


메인 메모리의 유효 크기를 증가시키기 위하여 사용



논리적 주소와 물리적 주소 영역



– 현재진행중인 프로세스가 참조하는 자신의 주소


– 가상주소(논리적 주소, 프로그램 주소)


– 가상주소를 실제의 물리적 주소로 변환하는 과정 – > 사상 또는 메모리 맵



메모리 관리 장치



– 논리주소(logical address)를 실제적인 메인 메모리 즉 물리적 주소(physical address)로 변환하는 메카니즘



페이징



– 물리적 메모리를 관리하는 하드웨어 기술로 작은 물리적 공간을 큰 프로그램이 실행될 수 있도록 소개한 방법



※ 페이지 크기


① 1K에서 8K 바이트 


② 메인 메모리와 보조 기억장치를 오가는 정보의 기본 단위가 된다.



세그먼테이션



1) 하드웨어


– 세그먼트 테이블의 논리 주소는 두 부분으로 구성


– 세그먼트 번호 s와 그 세그먼트내에서의 변위(offset) d로 구성 






5장 하드웨어 서브시스템

Standard

버 스


버스 : CPU를 비롯하여 각 장치간 또는 서브시스템을 서로 연결하여 정보(데이터)를 주고받을 수 있게 해주는 통로이다.


 


● 버스 계층


 


1) 백플레인(Backplane)


CPU와 메모리 또는 입출력 모듈 사이 즉 시스템 요소사이의 통신 경로를 제공하여 각 장치의 신호를 전달하기 위한 물리적 패키지를 의미하며 시스템버스 또는 외부 버스로 도 불린다.


컴퓨터에서는 일반적으로 마더보드의 한 부분으로 구성되거나 마더보드 그 자체로 볼 수도 있다.


 


2) 마더보드(motherboard)


CPU와 주변장치를 연결할 수 있도록 회로와 패키지를 구성한 PCB(Printed circuitbus)이다.


로컬버스 또는 메인 보드(mainboard)라고도 불린다.


 


3)인터페이스(interface)


서로 다른 버스를 연결시켜주는 장치로 입출력장치(디스크, 프린트, 카드판독기 등) 와 나머지 장치와의 일반적인 통신 경로를 제공한다.


 


● 버스 시스템의 구분


 


1) 전용과 공용버스


①전용 버스 : 하나의 기능을 수행한다. ex) 입출력 버스는 입출력 시스템과 CPU와의 연결


           장점 : 처리율이 높다.


           단점 : 대신 많은 버스를 구성해야 하므로 비용이 비싸다.


 


②비전용 버스 : 여러 기능으로 분할된다. 이때 기능은 하나 또는 여러 개의 보드로 구성된다.


        -> 공유된 버스는 전용버스와 비교하면 단순하고 저비용이나 데이터 전송량이 떨어진다.


 


2) 분할에 따른 버스분류


①자원 분할버스


자원은 메모리와 같이 패키지 되어 버스에 의해 연결된다.


 


[특성]


– 하나의 프로세서를 지향


– 메모리 버스 지향 : CPU-메모리 전송량이 버스의 사용율이 된다.


  * 하나의 데이터 전송


  * 짧은 버스 사이클 시간


– CPU와 버스 신호의 최적 결합


 


②기능별 분할버스


기능별 분할버스는 일부 독립적인 기능으로 구성된 보드를 연결한다.


 


[특성]


– 다중 프로세서 지향


– 메시지 지향 : 장치별 통신은 메시지 형식


  * 블록 데이터 전송


  * 처리율 향상


– CPU와 버스 신호의 uncoupling


 


● 버스 형태


 


1)내부 버스


CPU 내부에서 레지스터, 산술 논리 연산 장치, 기억장치 인터페이스 등을 연결하는 버스로 일반적으로  CPU 버스라고도 하며 역할에 따라 로컬버스, 프로세서버스로 불린다.


 


① CPU버스


CPU 내부에서 레지스터와 산술 논리 연산 장치, 레지스터와 레지스터 사이의 데이터와 제어 신호를 주고받는데 사용된다.


 


② 로컬버스


CPU, 메모리와 주변장치사이의 전송 경로로 장치와 장치 사이 부분으로 사용되고 제어하는 가장 단순한 버스 형태이다. 특히 메모리 버스와 입출력 시스템버스의 속도 차이를 해결하기 위하여 구성한 버스이다. CPU 내에서 로컬버스는 주소, 데이터, 제어 버스로 구분된다.


 


③ 프로세서 버스


CPU와 지원 칩 즉 칩 셋과 직접 통신하는 경로로 CPU와 메인 시스템 버스와 데이터를 전송하는데 사용된다. 예를 들면 CPU와 외부 캐시 사이이다.


 


2) 외부 버스


CPU와 RAM 또는 CPU와 입출력장치 그리고 입출력장치들 사이를 연결하는 버스로 일반적으로 시스템버스라고 부른다.


 


① 메모리버스


CPU와 메모리 또는 캐시메모리를 연결하여 자료를 교환하는 버스로 프로세서 입출력버스와 동일한 속도로 실행된다. 이런 경우 종종 외부버스, 프론트사이드 (frontside)버스로 불린다.


 


 입출력버스


주변버스(peripheral bus)라고도 하며 CPU와 주변장치를 연결하여 데이터를 전송한다.


 


3) 기능에 따른 버스 분류


① 데이터 버스


컴퓨터 시스템에서 자료, 명령어 등 정보를 교환하기 위한 버스로 프로세서에서 메모리나 입출력 장치로 데이터를 출력하거나 반대로 메모리나 입출력 장치로 부터 데이터를 입력할 때 이들 데이터의 전송로로 사용되는 양방향 버스이다.


 


② 주소버스


하나의 시스템 장치 예를 들면 프로그램카운터, 스택레지스터 또는 주소관련회로로부터 메모리로 주소 자료를 전송하는 단방향 버스이다.


 


③ 제어 버스


CPU가 기억장치나 입출력 장치와 데이터 전송을 할 때나 현재 수행중인 작업의 종류나 상태를 다른 장치에게 알릴 때 또는 프로세서에게 어떤 동작을 요청하는 입력 신호등으로 구성되는 단방향 버스이다.


 


● 확장로컬버스


대부분 마이크로 컴퓨터시스템에서 확장로컬버스는 CPU 외부에서 사용되는 특별히 확대된 로컬버스를 포함한다. CPU 클럭과 타이밍(timing) 회로로 버스들을 조절한다. CPU는 버스제어기에게 실행하기 위한 버스 사이클 형태의 상태신호들을 보낸다.


 


● 버스전송과 제어신호


버스를 통하여 정보를 전송하는 것을 의미하며 각 시스템과 확장로컬버스는 약간 차이가 있다.


 


1) 읽기 사이클의 시작


CPU는 읽기-제어선 R에 신호를 보낸다. 이 신호는 읽기 사이클의 시작 지시이다.


주소-가능신호를 AEN에 보낸다. 그리고 버스의 주소 라인에 물리적-메모리 주소를 전송하기 위하여 배치한다. 주소-가능신호는 첨부된 장치의 주소 라인에 주소를 갖고 있음을 의미한다.


 

중앙 처리 장치


 


● 레지스터


– 빠른 메모리로 모든 장치(회로)들을 연결하는 역할을 한다.


– CPU내에 특수한 목적을 갖는 하나의 값을 저장하는 기억공간으로 사용되며 연산처리 중 중간 값을 저장


– 메모리 주소 없이 제어장치에 의해 직접 다루어진다.


 


* 누산기


함수 연산 기능을 가진 명령어의 수행에 반드시 사용되는 데이터 레지스터


 


* 데이터 레지스터


함수 연산에 필요한 데이터를 기억시키는 레지스터로 수치, 문자, 논리 값 등을 기억시킬 수 있다.


 


* 주소 레지스터


주소를 저장한다. 또한 유효 주소를 계산하는데 필요한 주소의 일부분을 기억시키는데 사용되는 레지스터이다.


* 범용 레지스터


용도가 정해져 있지 않기 때문에 주소와 데이터 레지스터로 사용이 가능하다.


 


* 색인 레지스터


유효 주소를 계산하는 데 사용되는 주소 정보를 기억시키는 레지스터이다.


 


* 프로그램 카운터


명령어의 수행 순서를 보관하는 레지스터로 다음에 수행 할 명령어의 주소를 저장한다.


 


* 프로그램 상태 레지스터


플래그를 포함한 상태 정보를 기억시키는 레지스터


 


* 스택 포인터


메모리에 프로세서 스택을 구현하는데 사용하는 레지스터이다.


 


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


현재 수행하고 있는 명령어를 저장하는 레지스터


 


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


메모리에 액세스하려는 곳의 주소를 저장하는 레지스터


 


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


메모리에서 정보를 읽을 때 또는 정보를 기억시킬 때 사용하는 레지스터


 


● 레지스터 전송


 


1) 병렬전송


레지스터의 모든 비트가 한 클럭 펄스동안 동시에 전송되는 과정.


 


2) 직렬전송


클럭 펄스와 동기 되어 한번에 1비트씩 전송되며 쉬프트 레지스터가 대표적이다.


 


3) 버스 전송


만약 3개의 레지스터들로 구성되는 경우 다음과 같이 6개의 데이터 연결 경로가 필요하고 n비트로 구성된 경우 6n개의 선이 필요하다. 따라서 한번에 1개의 레지스터만 전송될 수 있도록 제한한다면 n개의 공통선으로 감소기킬 수 있다.


 


4) 메모리 전송


메모리와 외부회로와의 사이에 이루어지는 전송으로 읽기 동작과 쓰기 동작으로 구분.


 


● 산술 및 논리연산 장치


모든 컴퓨터들은 명령어들이 필요로 하는 산술, 논리 및 쉬프트 연산을 수행하는 산술 및 논리연산 장치를 가지고 있다. 고정 소수점 연산을 위한 것과 부동 소수점 연산을 위한 전용 산술연산 장치를 별로로 두는 경우도 있다. 프로그램 카운터의 부동 소수점 연산은 별도로 분리된 칩에 있는 부동 소수점 처리장치(FPU ; Floating Point Ucit)에서 행해지는 경우도 있는데, 이것을 수치연산 보조 프로세서라고 부른다.


 


제어장치



기억장치에 저장된 명령어를 하나하나씩 인출하여 연산코드 부분을 해석한 다음 해석한 결과에 따라 적합한 신호로 변환하여 각각의 연산 장치와 메모리를 제어하는 장치



※ 제어장치의 역할


–  입출력 장치의 제어


– 명령어의 해석 및 지시


– 기억장치 및 연산 장치의 제어



● 제어장치의 구조와 동작



제어장치는 2개의 마이크로 오더를 발생하고 레지스터 A에서 레지스터 X로 데이터를 전송한다. 여기서 ENABLE 이란 버스에 레지스터 내용을 대치하라는 의미이며 반면 ‘CLOCK TO X’ 의미는 버스로 부터 새로운 값을 레지스터 X로 받아들이라는 의미이다.



● 컴퓨터 시작



컴퓨터가 리셋벡터를 사용하면 제어장치는 프로그램 가운터속에 들어있는 리셋벡터를 적재한 후에 즉시 정상적인 연산을 시작한다.


하드웨어- 생성 주소를 사용하는 다른 컴퓨터 경우 컴퓨터가 시작 후에 실행되는 첫 번째 명령의 주소를 지정한다.



명령어 실행


명령어들의 셋으로 구성되어 프로세서에 의해 실행되도록 2진 코드로 메모리에 저장된다. 디스크 장치로 부터 메모리로 복사되어 이동된 2진 파일을 실행하게 되므로 프로그램 실행과정은 메모리로부터 데이터와 명령어의 복구이면서 다양한 연산의 실행이라고 할 수 있ㄷ.


 


● 프로그램


– CPU가 해야 할 연산(동작)을 지정


– 데이터의 위치와 출력 데이터를 지정


– 명령어들은 컴퓨터 시스템의 메모리에 보관되고 한번에 1개씩 CPU로 전송


– 그리고 해석되어 실행


 


● 명령어 실행주기


1. 메모리에서 명령레지스터에 이동 저장된 다음 명령어를 인출한다.


2. 방금 인출한 명령어를 해석하고 다음명령을 지정하기 위하여 프로그램 카운터를 변경한다.


3. 만약 명령이 메모리에 1개의 워드를 사용하면 어디(장소)인가 결정하여 오퍼랜드를 인출하고 필요하면 CPU 레지스터로 보낸다.


4. 명령을 실행한다.


5. 결과를 저장한다.


6. 다음 명령을 실행하기위해 1단계로 간다.


 


● 마이크로연산과 제어신호


컴퓨터가 기계어 명령어를 수행하기 위하여 CPU 내의 각 장치(부분)에 대하여 가장 낮은 수준의 상태 변환을 일으키는 동작을 의미


 


● 인출 사이클


[과정]


T1: MAR <- PC : 프로그램 카운터의 내용 -> MAR


T2: MBR <- Memory(MAR) : MAR의 값에 의해 주어진 메모리 주소의 내용을 MBR에 저장


T2: PC <- PC + 1 : 프로그램 카운터의 값 증가


T3: IR <- MBR(Op_Code) : MBR의 내용을 명령레지스터로 이동


 


※ “10110001 = ADD R1, R2” 의 명령어 인출 과정


 


● 간접 사이클


[과정]


T1 : MAR <- IR(Address) : IR의 주소 필드를 MAR로 전송


T2 : MBR <- Memory(MAR) : 오버랜드의 주소를 읽는다. MBR은 주소 포함


T3 : IR(Address) <- MBR(Address)


*이때 IR은 직접 주소형태가 사용한 것과 같은 상태가 된다.


 


● 실행 사이클


[과정]


T1: MAR <- IR(address) : X의 주소를 MAR로 이동


T2: MBR <- Memory(MAR) : 메모리에서 MAR 값을 읽고, MBR에 저장


T3: R1 <- R1 + MBR : MBR 내용과 R1값을 더하고, 그 결과를 R1에 저장


 


[과정]


MAR <- IR(address) : 주소 부분을 IR에서 MAR로 이동


MBR <- Memory(MAR) : CPU와 메모리를 연결하는 데이터회선을 통하여 MAR에 저장된


                                     주소에 있는 내용을 MBR로 전송


ACC <- MBR : 인출된 데이터가 누산기에 전송하고 사이클의 종료


 


● 인터럽트 사이클


[과정]


T1: MBR <- PC : 프로그램 카운터의 현재 내용을 MBR로 이동


T2: MAR <- Save_Address : 프로그램 카운터에 저장된 주소를 MAR로 이동


T2: PC <- IntRoutine_Address : 인터럽트 루틴주소를 프로그램 카운터로 이동


T3: Memory(MAR) <- MBR : MBR의 주소에 있는 내용을 지시된 메모리 셀로 이동 


 


제 4장 명령어 구조

Standard

명령어란?
     사용자가 원하는 연산과 오퍼랜드 그리고 처리되는 순서를 프로세서에게 지시하는 명령문


   1.명령어 구성
컴퓨터가 수행해야하는 물리적인 연산, 그명령어를 수행하는데 필요한 자료가 저장된 위치(레지스터,메모리)등을 나타내는 0과 1의 2진 코드이다.

4096 워드를 가진 기억장치에 대한 주소 할당을 위하여 최소 12비트 번지가 필요하다 따라서 16비트로 구성된 명령어 길이를 사용한다면 12비트는 번지에 그리고 나머지 4비트는 연산코드에 할당함으로써 최소한 16개의 명령어를 작성할수 있다.
이러한 명령어를 실행하면 지정된 번지의 오퍼랜드와 레지스터 사이에 마이크로 연산 들이 실행된다.
연산은 명령어의 일부로서 즉 연산 코드로 컴퓨터에게 지정된 연산을 실행하도록 하는 2진 코드이다.

2. 레지스터

컴퓨터의 중요한 차이는 컴퓨터의 중앙처리장치에 포함되어 있는 레지스터의 수 그리고 기능과 관련이 있다.

AC : accumulator register
DC : general – purpose register
MQ : multiplier – quotient register
MM : Main Memory

3. 프로세서 상태 비트

프로세서 상태 비트(플래그(flag))
연산과정에서 발생되는 상태의 정보를 보관하거나 상태를 나타내는 비트

4. 오퍼랜드 액세스

주기억장소와 레지스터 모두 액세스하는 명령어를 M-R(Memory-toRegister) 명령어 형태라 하고 주기억장소로부터 오퍼랜드를 가져와서 실행한 후 실행결과를 다시 주기억장소로 저장하는 명령어를 M-M (Memory – to – Memory)명령어 형태라 한다. 이러한 형태는 문자열을 연산하는 명령어 형태이다 레지스터로부터 오퍼랜드를 가져와서 실행한후 실행결과를 다시 레지스터로 보내는 명령어를 R-R(Register – to – Register)명령어 형태라 한다.

6. 명령어 길이

명령어를 코드하 할 때 다음과 같은 사항에 대하여 균형이 되도록 해야한다.

-가능하면 많은 레지스터와 주소 지정 형태를 포함하려고 한다.
-레지스터의 크기와 주소 지정 필드의 결정은 평균명령어 길이가 되고 또한 평균 프로그램 크기가된   다.
-파이프라인 구현에 알맞은 명령어 코드 파이프라인을 사용한다.

명령어 셋 구조
 1.오퍼랜드 저장위치에 따른 명령어 셋 구조 분류.

1.스택 구조

  산술논리 명령들을 수행하기 전에 연산에 필요한 오퍼랜드들을 스택에 저장하고 또한 연산의 결과도 스택에 저장하는 형태의 컴퓨터이다.

장점
  명령어의 길이가 짧음
  레지스터로 스택을 구현 한 경우에는 메인 메모리 밴드 폭의 이용이 효율적임
  명령어 수행 시간이 짧음
단점
  연산기능의 명령어는 스택에 기억되어 있는 데이터만 연산 가능
  일정한 순서로만 연산이 되므로 연산에 사용할 데이터를 미리 스택에 저장(push)해야 되고 데이터를 처리되 는 순서대로 기억시켜야 함

2.누산기 구조
   모든 연산 기능의 명령어 수행에 필요한 오퍼랜드들 중 하나를 누산기에 기억시키는 컴퓨터 구조이다. 중앙처리 장치 내에 있는 유일한 데이터 레지스터로 연산 명령어를 수행할 때 오퍼랜드를 기억시키는 레지스터이다.

  이와같이 누산기 컴퓨터에서는 누산기에 기억된 계산의 임시 결과를 메인 메모리에 기억시키고 , 누산기에 기억되어 있던 임시 결과가 필요할때 다시 읽어 와야 하므로 명령어 수행 시간이 길어진다.

3.범용 레지스터 컴퓨터의 구조
  범용 레지스터 컴퓨터의 구조는 중앙 처리 장치 내에 많은 수의 용도가 정해지지 않은 레지스터를 가지고 있는 컴퓨터이다.
  레지스터는 프로세서의 내부 저장형태로서 메모리 보다 빠르다.

4.오퍼랜드 수에 따른 명령어 셋 구조 분류
  초기의 컴퓨터 이후 얼마나 많은 명시된 외부 오퍼랜드 주소를 명령어에 포함할 것인가에 대해 주요한 초점이 되었다. 명확하게 적은 주소를 사용하여 보다 짧은 명령어를 구성하려고 했다. 여기서는 이러한 주소의 수 즉 오퍼랜드 수에 따른 명령어 셋 구조를 분류하여 보자.

  Ø-오퍼랜드 명령어
   O P – C O D E
   대부분 오퍼랜드 명령어는 외부에 명시된 오퍼랜드가 없으며 명령어 자체에 함축되어 있다. 이러한 명령어는 스택기반 구조로 메모리에 소프트웨어로 구현되어 있거나 CPU에 하드웨어로 구현되어 있다.


PC : 다음 명령어의 주소 저장
IR : 현재 명령어 저장
ALU : 스택으로붜 2개의 오퍼랜드를 POP하고 연산 결과를 스택에 Push한다.

1-오퍼랜드 형식


 1-오퍼랜드 컴퓨터는 누산기라 불리는 특별한 레지스터를 갖고 있다. 또한 대부분 내부적 오퍼랜드이며 다른 오퍼랜드는 메모리에 있다.


 


  2-오퍼랜드 형식

    대부분의 컴퓨터가 이용하는 형식으로 인텔의 x86구조 등이 대표적이다. 하나의 오퍼랜드는 누산기나 색인  레지스터이며 다른 하나의 오퍼랜드는 메모리에 있거나 직접자료이다.
인텔의 경우 레지스터를 사용할 수도 있다. 결과는 원시 레지스터에 저장된다.


 


3-오퍼랜드 형식


명령어 분류

  컴퓨터를 설계할 때 구조가들은 컴퓨터의 명령어 셋 구조를 조심스레 검토하고, 형태들, 데이터 형태에 따른 연산들 프로그램 실행시 이루어지는 제어의 논리적 흐름등을 참조하여 선택한다. 그리고 명령어 셋 구조를 정의한 후 명령어 형태를 지정하여 각 명령어를 표현하는 하드웨어를 결정하게 된다.

  1.연산관련 명령어

    연산을 실행하기 위한 오퍼랜드와 연산과정을 기술 해야한다. 이때 명령어는 묵시 오퍼랜드 또는 명시 오퍼랜드를 지정할수 있다. 오퍼랜드가 다른 내용의 기술 없이 연산코드에 의해 지정되는 형태를 묵시 오퍼랜드라 한다. 명시 오퍼랜드는 며령어의 연산코드 이외의 다른 필드 즉 주소필드에 그 내용을 기술한다.

 1) 산술 연산
   ADD, SUBTRACT, MULTIPLY, DIVIDE와 같은 산술연산 명령어를 제공한다. 일반적으로 조건 코드나 프로세서 상태 플래그로 연산의 결과나 과정을 표시 하도록 한다. 자리올림, 자리빌림, 오버플로, 언더플로 등으로 발생되고 그 결과를 0으로 표시한다.

  2) 논리 연산
   AND,OR,NOT,XOR등을 제공한다. 이러한 명령어 들은 다른 많은 연산을 수행하고 비트 그룹에서 특정비트들을 추출 또는 지우는 등 조건코드를 자주 셋 시킨다.

  3) 쉬프트 연산
   쉬프트 명령어는 ROTATE LEFT/RIGHT, SHIFT LEFT/RIGHT등으로 데이터의 각 비트가 좌, 우로 이동되는 명령으로 다음과 같이 구분한다.
다음은 왼쪽, 오른쪽 쉬프트 이동 과정을 보여준다.
2번째 그림은 로테이트 를 설명한다.

   4)문자와 문자열 처리 명령
    문자 명령어는 문자 정보를 처리하는 유용한 수단이다. 논리적 또는 쉬픝 명령어를 이용하여 문자열을 처리 할 수 있으나 대부분의 컴퓨터는 문자열을 처리하는 특별한 명령어 MOVE CHARACTER/STRING, COMPARE CHARACTER/STRING등을 제공하고 잇다. 문자 명령어는 바이트 기반 명령어 이다.

   메모리 액세스 명령어
    프로그램 수행동안 제어장치에 의해 주기억장소와 레지스터 사이에 정보교환이 이루어 지도록 지시하는 명령으로 일반적으로 적재와 저장으로 불린다
    LOAD는 메인메모리에서 레지스터로 정보가 이동되는 과정을 의미 하고 반대로 레지스터에서 메인메모리로 정보가 이동되는 과정을 STORE라 한다.
    LOADA와 STORE명령어들은 오퍼랜드의 크기를들면 바이트,워드,2배 워드 등을 지정한다.

  제어 명령어
    제어 기능에 다라 프로그래머가 프로그램에 의해 구체적인 제어를 지시할 수 있다.


       1) 분기 조건
               분기가 발생할 경우
               CPU는 프로그램 카운터 안에 분기-목표 주소를 배치
               분기가 발생하지 않을 경우
               CPU는 프로그램 카운터의 내용을 바꾸지 않음
        2)서브루틴- 연결 명령어
               프로시저로 분기하는 명령이 있고 프로시저로부터 반환하는 명령이다 jsr명령은 전형적인 분기 프로시저이다.

 레지스터-간접 주소 지정방식


– 명령어는 연산레지스터를 지정하고 내용은 오퍼랜드의 절대-2진 주소를 보관한다.



변위 주소 지정방식


– 전감 레지스터를 사용하여 저장된 내용을 더하여 유효주소를 생성한다.



색인 주소 지정방식


– 배열원소에 효과적으로 액세스하는데 적합한 주소지정방식으로 모든 컴퓨터들은 이러한 색인 형태를 지우너하고 있다.
간접주소 지정방식


– 간접분기주소가 123 일 때 메모리 위치 123에 보관되어 있는 주소의 명령으로 분기


 


색인-간접 주소 지정방식


– 색인주소지정방식과 간접주소지정방식을 혼합한 형태이다.


기준-변위 주소 지정방식


– 색인주소지정방식과 비슷하다. 베이스레지스터는 기준주소라고 불리는 유효주소를 보관한다. 이때 베이스레지스터는 범용레지스터에 속한다.



자동증가와 자동감소 주소 지정방식


– 메인 메모리에 스택을 구현하려는 프로그래머에게 도움을 주고, 선형구조의 원소를 순차적으로 액세스하도록 하여준다.


– 자동감소주소지정방식은 그것을 사용하기 전에 레지스터 주소를 감소시키고, 자동증가 주소지정방식은 그것을 사용한 후 주소를 증가시킨다. 


 


3장 디지털 회로

Standard

 

1 부울 대수의 함수


부울 대수의 개념


부울 대수(Boolean Algebra) 1854년에 발표된 사고의 법칙에서 AND, OR, NOT이라는 연산자를 사용해 이진 정보를 처리할수 있는 모델로 논리적인 판단을 수학적으로 해석하기 위해 영국의 수학자 George Boole 제안한 이론이다.


정보를 또는 거짓이라는 개의 논리로 표현하고 있으며 논리 대수
부울 대수의 변수는 0또는 1
부울 함수는 AND, OR NOT 연산자와 ( , +   정의되며 연산 결과는 언제나 1, 또는 0으로 표현

이때 결과는 수학적인 1 또는 0 아니라 명제의 (1) 거짓(0), 신호의 (1) 또는 (0), 스위치의 ON(1) 또는 OFF(0) 상태를 의미



AND연산자는 xy또는 xy 표시하며 ‘x and y’ 읽는다.
OR
연산자는 x+y 표시하며 ‘x or y’ 읽는다 결과값은 입력값이 모두 0 결과는 0이다

NOT
연산자는 x’ 표시


연산자의 연산 우선순위는 NOT, AND, OR순서가 된다                                     
함수는 F 먼저 나타내고 y’ z AND 연산을 수행한다
.
AND
연산결과와 x OR 연산이 이루어진다.


 



 


2 기본 논리 회로


논리 회로 (Logic Gate)


주어진 입력 변수의 값에 대하여 정해진 논리함수를 수행하는 회로
기본 연산자인 AND, OR, NOT등의 연산을 수행하기 위한 회로로 컴퓨터를 구성 하는 기본 회로로 이용


기본적인 회로


연산을 수행하는 논리곱 AND회로
OR
연산을 수행하는 논리합 OR 회로
연산을 수행하는 논리 부정 NOT회로


 


일반적인 표준 회로


NAND , NOR회로
NAND
회로를 이용하여 어떤 전자회로도 구성할 있고 회로를 구성하기 쉬우며 부울 대수 함수를 모두 실현할 있음


 



 


2. NAND회로 구성이유


NAND 회로는 다른 어떤 회로보다 저렴하게 구성할 있다.
복합 회로 형성에서 기본적인 AND, OR, NOT 회로를 이용한 블록보다 NAND 회로가 쉽게 블록을 형성 있다.


 


1)      논리곱 AND 회로


2개의 조건이 있을 때에 모든 조건을 만족해야 결과가 참이 되는 조건으로 논리 연산자는 이다.
입력 A B 모두 1 경우에만 출력 Q 1 된다

대수식은 F=AB 또는 F=AB이다.


 




 


2)      논리합 OR 회로


입력 A B 적어도 한쪽이 1이면 출력 Q1 된다. 논리연산자는 ‘+’이다.


대수식은 F=A+B이다.


 



 



3)      논리 부정 회로 NOT gate회로


주어진 하나의 입력 조건에 대하여 출력이 반대(inverter) 되도록 하는 회로 ‘-‘(bar) 또는 ‘ ‘ ‘ (prime) 표시


입력 A 1이면 출력 Q 0 입력 A 0이면 출력 Q 1 된다.


대수식은 F=A 또는 F=A’ 이다.


 




 


4)      버퍼 회로


입력 신호에 대한 연산이 없이 그대로 출력해주는 논리 회로로 단순히 신호의 전력을 키워 주는 역할을 한다


대수식은 F=A이다


 



5)      논리곱 부정 NAND 회로


회로 왼쪽 부분은 AND 회로로 구성되고 회로의 오른쪽 부분은 NOT 회로로 구성된 회로이다. AND 정반대 동작 AND 보수


대수식은 F=(AB)’


 



6)       논리합 부정 NOR 회로


회로 왼쪽 부분은 OR 회로로 구성되고 회로의 오른쪽 부분은 NOT회로로 구성된 회로


OR회로와 정반대로 동작함


대수식은 F=(A+B)’


 



7)      배타적 논리합 XOR 회로


두개의 명제가 서로 반대되는 조건의 논리합 형태로와 같은 논리 관계를 배타적 논리합이라 한다


대수식은 F= AB’+A’B 또는 F=AB


 


 



 


플리 플롭


플리플롭(F/F; flip=flop) 1 비트의 정보를 기억할 있는 기억소자로 순차논리 회로의 기본요소
2
개의 안정된 상태를 유지하는 회로 가지 상태 사이를 번갈아 유지하는 전자회로를 말한다.
산술 연산과 논리 연산의 중간 결과를 저장하는 레지스터들을 비롯하여 프로그램 카운터, 버퍼, 정적 RAM등을 구성하는데 사용된다.



1)비동기 플리플롭



출력 신호인 Q S(Set)단자에 1 신호 들어오면 1 되고 R(Reset) 단자에 1 신호 들어오면 Q 0 된다.
RS
플립플롭의 특징: S=0, R=0이면 출력은 변하지 않고, S=1, R=0 이면 출력 Q=1,    =0 되고, S=0, R=1이면 Q=0,    =1 된다.



전달지연시간 : 회로나 여러 개의 회로로 구성된 플립플롭과 같은 반도체들은 전기적인 특성으로 인하여 입력 신호를 입력한 일정기간이 경과해야 출력 신호가 나타나거나 출력 신호의 변화가 발생하는 것과 같은 지연 시간
NOR
회로의 전달 지연시간이 10ns(nano second) 이므로 출력 신호 Q   다르게 나타난다.



NAND회로는 입력 신호 중에서 어느 하나가 0이면 출력신호는 1 되는 특성이 있다.
NOR
회로와  반대로  S=0, R=0 되면 개의 출력 신호  Q,    모두 1 되어 이것은 Q     서로 보수가 되어야 한다는 사실에 위배 되므로 이러한 입력 신호는 피해야 한다.


 


2)동기플리플롭



회로의 G3 G4 출력 신호 클럭 펄스가 0 동안 1 유지하게 되므로 이때의 출력은 변화가 없다.
클럭 펄스가 1 되면 S, R 입력이 회로 1(G1) 회로 2(G2) 입력 신호로 전달되어 앞에서 설명한 RS 플립플롭과 같은 동작을 한다


 



클럭 펄스가 0 경우에는 S, R입력에 관계없이 회로 3 회로 4 출력 신호 S1 =R1 =0 되므로 출력은 변화하지 않는다.
클럭 펄스가 1 되면 S, R 입력이 S1, R1 입력으로 전달되어 앞에서 설명한 비동기 RS 래치와 같은 동작을 한다
.
동기 R-S 플립플롭: 이와 같은 래치 회로에 AND회로를 추가하고 AND회로에 클럭 펄스를 동시에 입력하도록 구성한 플립플롭

D플리플롭

D 플립플롭: 동기 RS 플립플롭을 변형한 것으로  R-S플립플롭에서 나타나는 부정상태를 제거하기 위한 플립플롭
 따라서 S=R=1이 동시에 입력되지 않도록  입력 신호 D가 그대로 출력신호 Q에 전달하는 플립플롭이다.








) C = 1 경우 동작과정:


D = 0 이면 회로 G3 출력은 1 되고, 회로 G4 입력 신호가 모두 1이므로 출력은 0 된다. (비동기 R-S 플립플롭 동작 과정과 동일)
회로 G2 입력 신호 중의 하나가 회로 G4 출력 신호이므로 0 된다. 이때  회로 G2 출력 신호     1 된다
.
회로 G1 입력 신호는 회로 G3 출력 신호와 회로 G2 출력신호이다. 따라서 모두 1이므로 회로 G1 출력 신호 Q D 입력 신호와 같이 0 된다
.
D =1
경우에도 마찬가지로 동작하여 출력 신호 Q 1 된다
.


JK플리플롭




기본적인 RS플립플롭(NOR회로로 구성) 2개의 AND회로 구성
입력 신호는 J(set), K(reset) 두개로서, 각각  R-S 플립플롭의 S, R 마찬가지의 역할을 하도록 구성한 회로
R-S
플립플롭에서 나타난 불안정한 상태, R, S 입력 신호가 모두 1 발생하는  출력의 불안정한 상태를 보완하려는 회로
JK
플립플롭은 J, K 입력 신호가 모두 1 경우 클럭 신호가 발생하면 출력 신호는 현재 출력의 반대 된다.


3-2 디지털 논리회로


컴퓨터는 많은 직접 회로(ic) 구성되며 또한 가각 특징적인 역할을 수행
디지털 논리회로에는 조합회로와 순차회로의 형태로 구분한다.




조합회로


OR, AND, NOT 기본 논리 회로를 조합하여 만든 논리회로로서  여러 개의 입력을 받아 원하는 결과를 출력
입력에 따라 출력이 결정되므로 동일한 입력에 대하여 항상 동일한 출력을 나타냄
컴퓨터 내부에서 산술 연산을 수행하고 데이터 이동을 제어하고 비교 연산 등의 목적에 사용


 



n개의 입력과 m개의 출력을 갖는 조합 회로 1 비트의 정보를 포함하는 입력변수들과 회로와 1 비트 정보로 표현하는 출력 변수로 구성
2n
개의 가능한 입력 신호의 조합과 입력 조합에 대하여 하나의 출력 신호의 조합이므로 m개의 부울 함수가 표시 있고, 출력 함수는 n개의 입력 변수의 으로 표시


 


반가산기회로


2진수 1자리를 나타내는 2개의 수를 입력하여 합과 자리올림수를 구해 주는 조합 논리 회로
(Sum): 2진수의 덧셈에서  1+1=10 에서 0
자리올림수(Carry): 자리로 올라간 1








전가산기 회로


개의 입력과 단계에서 발생한 자리올림수를 더하도록 구성된 개의 입력 비트의 합을 구하는 회로
그림30



디코더


코드 형식의 2 정보를 다른 코드 형식으로 바꾸는 디지털 기능
n
개의 입력으로 들어오는 데이터를 받아 그것을 숫자로 보고 2 n제곱 개의 출력 회선 숫자에 해당되는 번호에만 1 내보내고 나머지는 모두 0 내보내는 논리 회로



2 TO 4 2 디코더



BCD-to-seven segment 디코더


BCD 10진수를 입력하여 일곱 개의 출력을 내보는 회로로 일반적으로 10진수를 디스플레이 하기 위하여 사용





디코더로 구현한 가산기 회로


s(x,y,z) = m(1,2,4,7)


 c(x,y,z) = m(3,5,6,7)



멀티플랙서


2n개의 중의 선으로부터 정보를 받아들여 1개의 출력선으로 정보를 출력
선택되는 개의 입력선은 n개의 선택선의 비트조합에 의해 결정
특정한 입력선 선택을 제어하기 위하여 개의 선택변수를 이용



 



2)순차회로


기억요소(메모리) 포함된 논리회로로서 출력이 현재의 입력과 출력 값에 따라 결정되는 회로
출력=f(현재 입력자료, 남아있는 자료( 입력자료)




 


쉬프트 레지스터


기억하고 있는 내용을 오른쪽이나 왼쪽으로 이동시킬 있는 레지스터로 여러 개의 플립플롭을 연속으로 연결하여 구성



클럭펄스가 들어올 때마다 레지스터의 내용은 1비트씩 오른쪽으로 전달됨                                                                 그림41
디지털 정보가 한번에 1비트씩 전달되고 처리될 직렬방식으로 동작


 


쉬프트레지스터 모형도


레지스터 A 내용을 레지스터 B 직렬 전달하는 회로
                 
레지스터의 A 직렬출력은 SO
                 
레지스터 B 직렬입력은 SI


 


쉬프트 제어 신호가
 1일때 클럭신호가 생성되어 레지스터의 클럭 펄스(cp) 전달되며 T1 , T2 , T3 , T4 4 펄스에 따라 출력이 이루어짐


비트시간: 클럭펄스의 주기
워드시간: 쉬프트 레지스터의 내용을 모두 전달 때까지의 시간


 


레지스터 A 내용이 1011, 레지스터 B 내용이 0010 A에서 B 직렬 전송이 발생하는 4단계의 과정


직접회로


트랜지스터, 다이오드(diode), 저항, 축전기와 같은 전기부품을 포함한 (chip)이라 불리는 작은 실리콘 반도체                              그림45
안의 많은 회로들은 회로의 요구에 따라 서로 연결되어 전자회로를 구성

칩은 금속이나 플라스틱 패키지(package) 안에 설치되고 외부단자(pin) 의해 외부와 연결되도록 만들어짐


1)IC패키지


패키지 종류


CDIP (Ceramic Dual Inline Package)
DIP (Dual Inline Package)
PQFP (Plastic Quad Flat Pack)
SOIC (Small Outline Integrated Circuit
 


2)직접도에 따른 분류


소규모 집적(SSI; Small-Scale Integration)
중규모 집적
(MSI; Medium-Scale Integration)
대규모 집적
(LSI; Large-Scale Integration)
초대규모 집적
(VLSI; Very-Large-Scale Integration)


 


3)기술에 따른분류


TTL (Transistor-Transistor Logic)
ECL (Emitter-Coupled Logic)
MOS (Metal-Cxide Semiconductor)
CMOS (Complementary Metal-Oxide Semiconductor)


 


4)논리계열의 특성


Fan-out


회로의 출력이 정상동작 상태를 유지하고 표준회로의 출력이 구동될 있는 표준부하(load) 수로서 정의


 


 회로에서 소비되는 전력소비


회로를 동작시키는데 필요한 전력의 크기로 단위는 mW(milliwatt)


 


 전파지연


신호가 입력해서 출력할 때까지의 평균 전파지연


 잡음여유


회로출력에 원하지 않는 변화가 일어나는 최소잡음 전압


 


회로의 특성 




제2장 자료의 표현

Standard

IT학부 C반 08611116 이준영



자료표현의 단위.


  – 비트 bit


  – 바이트 byte
  –
워드 word
  –
반워드 half word
  –
워드 full word
  – 2
배워드 double word



비트 (Bit)
  – 정보를 나타내는 최소 단위
  –
하나의 2진수값 (0 또는 1) 가짐


 


 


바이트 (Byte)
  –
문자를 표현하기위한 기본단위
  – 8Bit
를 묶어 하나의 문자 표시



 


워드 (Word)
  –
컴퓨터에서 명령을 처리하는 기본단위
  –
연산 레지스터의 크기를 의미


2)수의 체계와 진법

  – 10
진접123.456 = 1 × 10² + 2 × 10¹ + 3 × 10° + 4 × 10¯¹ + 5 × 10¯² + 6 × 10¯³
  – 2
진법 : 11112 = 1× 2³ + 1 × 2² + 1 × 2¹ + 1 × 2° = 8 + 4 + 2 + 1 = 1510  
  – 8
진수3458 = 3 × 8²  + 4 × 8¹ + 5 × 8°= 192 + 32 + 5 =22910 
  – 16
진수A × 16¹  + 3 × 16° = 16310 
                     160   +   3     163 (10)



3)수 변환
  – 2
진수 -> 10진수 변환      
   
n 비트의 값(value)Xn-1Xn-2 ․․․․  X2X1X0 이므로  
       Xn-12ⁿ¯¹ + Xn-22ⁿ¯² + ․․․․+X22² + X12¹ + X02° 로 표시

  –
10진수 -> 2진수


  – 10진수 -> 8진수

  – 소수점 부분변환
     0.125
에대한 2진수표현



  – 2진수와 8진수 관계
    
소수점을 기준으로 3자리씩 정수는 왼쪽방향으로 소수는 오른쪽방향으로 끊어 나간다. 3개가 8진수 1자리

  – 2진수와 16진수 관계
    
소수점을 기준으로 4자리씩 정수는 왼쪽방향으로 소수는 오른쪽방향으로 끊어 나간다. 4개가 16진수 1자리


 


4)보수
 보수는 컴퓨터 내부에서 수를 표시할 부호가 있는 음수를 표시하기 위해 사용하는 방법이며 또한 뺄셈 연산을 덧셈 연산으로 대체하기 위한방법
 
보수의 종류는 r-1보수와 r 보수 표현법이 있다. r-1보수 표현법은 기수 r 보다 1 축소된 형태로 2진수에서는 1 보수,10진수에서는 9 보수를 사용한다.
 r
보수 표현법은 r-1보수 보다 1 수이다.


 


(R-1)보수
    10
진수에서는 9 보수가 해당되며 2진수에서는 1 보수가 해당된다.


9 보수
      10
진수에서 9 보수를 구하는 방법은 9에서 각각의 숫자를 빼서 구한다.


 ) 12 대한 9 보수


                         99
                          -12
                         
───

                            87     12 대한 9 보수


 


1 보수
      2
진수에 대한 1 보수는 1 0으로, 0 1 변환한다.


    11011011 → 00100100


 


R 보수
     10
진수에서는 10 보수가 해당되며 2진수에서는 2 보수가 해당된다.
     10
진수에서는 10 보수가 해당되며 2진수에서는 2 보수가 해당

     (r-1)
보수를 구하여 가장 낮은 자리에 1 가산



    
10 보수
     9
보수에 1 더한 것과 같다.


   2 보수
   
 2진수에 대한 2 보수는 1 보수에 1 더하면 된다.


  001   → 110 대한 1 보수
          110
─────→   +  1   → 1 더한다
                                            
───
                                                 010   → 110 대한 2 보수


 2 – 2 수치 데이터


사칙 연산의 대상이 되는 데이터
 
연산과 데이터의 표현 방법에 따른 구분
 
고정 소수점 데이터 형식 (정수)
 
부동 소수점 데이터 표현 (실수
)
  10
데이터 형식


 


1)      고정 소수점 데이터형식


컴퓨터 내부에서 고정 소수점 데이터인 정수를 표현할 사용


             부호와 절대값방법(sigend magnitude)


             숫자를 나타낼 수앞에 ‘+’ 또는 ‘-‘부호를 붙여 나타낸다
            
수를 구성하는 비트열의 가장 왼쪽 최상위 비트를 부호 비트로 사용하여 값이 음수일 때는 1 양수일 때는 0으로 나타낸다.



                     35      0010 0011
                    -35      1010 1011


보수를 이용한 방법


 


부호와 1 보수에 의한 방법에서 양의 수를 나타내는 방법은 부호와 같으나 음수의 경우는 양수에 대한 1 보수 형태로 표현한다.
+17      0001 0001
 -17      1110 1110


 


부호와 2 보수


2 보수 개념은 1 보수에 1 더한 값과 같은데 음수는 2 보수에 의해 나타내 진다.


      +35     00100011


       -35     11011101


 


2)      10진수 데이터 형식


언팩 10진법 형식(unpacked decimal format)


1바이트 내에 10진수 1자리를 표현
10
진수 1자리를 8비트로 표현하게 되므로상위 니볼 왼쪽 4비트는 (zone), 나머지 4비트 하위 니불은 디지트(digit) 나타낸다.


 


[형식]


 


 


부분:  16진수 F(1111) 들어감