참, 거짓을 판별할 수 있는 논리적 명제를 수학적으로 표현
부울 대수를 사용하면 진리표 관계를 표현하기 더 용이해지고 진리표가 만들어지면 논리 회로의 구조를 기술하는데 용이해지고 고로 더 좋은 cpu가 만들어진다.
E
= (a`+ bc)(a + b)
= aa` + a`b + abc + bbc (aa`는 뭔 짓을 하든 0이므로 사라짐)
= a`b + abc + bbc (bb는 b가 된다. 자기 자신끼리 and연산하면 자기 자신)
= a`b + abc + bc (분배 법칙을 활용한 bc로 묶기)
= bc(a + 1) + a`b (a + 1은 합연산인데 우항이 1이니까 무조건 1이 됨)
= bc + a`b
진리표를 만들 때 부울 대수를 곧바로 간소화할 수 있는 방법
카노맵의 셀 하나
결과값이 입력값에 의해서만 결정되어지는 논리 회로이다.
결과값은 입력값의 0과 1들의 조합함수이다.
동작을 동기화하기 위한 전자적인 펄스
플립플럽(Flip-Flop)과 래치가 있다.
1비트의 정보를 보관, 유지할 수 있는 회로다.
클럭 신호가 없다.
비동기로 동작한다.
클럭 신호가 있다.
래치에 클럭 신호를 논리곱 하도록 설계돼있다.
동기로 동작한다.
조합 회로와 플립플럽이 어우러지는 회로
단순히 더하기 연산을 생각했을 때
자릿수 올림이 발생이 발생하면
올림된 결과값을 플리플롭에 기억하고
다음 연산시 플리플롭에 저장된 값을 사용하는 식으로 논리가 전개된다.
플립플럽을 여러개 연결한 기억 장치
cpu에서 산술 연산, 논리 연산, 전송 조작을 할 때 데이터를 일시적으로 기억하는 장소
RS는 명령어를 실행하는 필요한 데이터를 보관한다.
CU는 RS간의 정보 전송을 감시하고 ALU에게 수행할 동작을 지시한다.
ALU는 명령어를 실행하기 위한 마이크로 연산을 수행한다.
외부에 보이는 동작이 큰 연산
EX) 엑셀 연산, 빅데이터 연산
사람으로 비유하면 운전, 요리
내부에서 명령어들을 실행할 수 있게
즉, 매크로 연산이 돌아가게 지원해주는 연산
사람으로 비유하면 호흡, 심장 펌핑 (자율 신경계)
메모리 주소 레지스터
CPU가 데이터를 읽거나 쓰려는 메모리 주소를 일시적으로 저장한다.
메모리 버퍼 레지스터
메모리에 읽거나 쓰려는 데이터 또는 명령을 일시적으로 저장한다.
프로그램 계수기
다음에 수행될 명령어가 들어있는 주 기억장치의 주소를 기억하는 레지스터
명령 레지스터
PC가 지정하는 주소에 기억되어 있는 명령어를 해독하기 위해 임시 기억하는 레지스터
명령어 해독기
IR에 들어있는 명령 코드를 해석하는데 사용
각종 명령 코드를 제어 신호화하여 기계 사이클로 변환, 전송한다.
제어 장치
ID로 보내져온 신호에 따라 명령어를 실행
clock에 의해 발생
범용 레지스터
WR에서 DATA가 용이하게 처리되도록 임시로 자료를 저장한다.
ALU와 연결되어 있지 않다.
작업 레지스터
산술 논리 연산을 실행할 수 있도록 자료를 저장한다.
ex) 1 + 2 + 3 연산을 하면 1 + 2연산을 저장해놓고 다시 불러와서 3 + 3 연산을 하게됨.
ALU와 연결되어 있다.
상태 레지스터
CPU의 상태를 나타내는 특수 목적의 레지스터
ex) Z(zero) / 부호 S(sign) / 오버플로우 V(overflow) / 캐리 C(carry) / 인터럽트 I(interrupt)(우선 되어야 할 명령)
현재 PC가 기억하는 명령어는 ADD(107, 108)
일 때를 가정
ADD(107, 108)
주소를 넘기면 MAR은 메모리의 주소 번지의 명령어를 가져온다.107, 108
번지 주소를 MAR에게 넘기면내부 레지스터, 타이밍, 제어 구조 명령어 집합에 의해 정의된다.
즉, 내부 레지스터끼리 데이터를 주고 받을 때
아무 때나 주고 받지 않고 클럭 펄스와 같은 타이밍에 의해 주고 받는데
제어 구조 명령어 집합에 의해 더해서 줄 건지, 빼서 줄 건지 결정된다.
레지스터에 저장된 데이터의 조작을 위해 실행되는 동작
클락 펄스 내에서 실행되는 기본적인 동작
ex)
시프트(shift) - 시프트 연산 (<<)
카운트(count) - PC가 다음 명령어 주소를 가리키도록 카운팅
클리어(clear) - 메모리를 비우는 연산
로드(road) - 보조 기억 장치에서 주 기억 장치로 로드
명령어를 어떻게 구성하고, 어떻게 실행할 것인가? 고민에 의한 답
a) 레지스터 하나를 의미
b) 8비트가 탑재될 수 있는 레지스터 표현
c) 16비트가 탑재될 수 있는 표현
d) 상위 비트와 하위 비트 표현
R2← R1
치환연산자(replacement)를 이용한 레지스터 간 정보 전송
P:R2← R1
if (P==1) then (R2← R1)
소스(source) 레지스터로부터 목적(target)레지스터로의 연결과 아울러 목적 레지스터에 조건부 처리가 가능할 수 있도록 병렬 로드 기능이 있어야한다.
레지스터 전송을 나타내는 각 문장들은 그 전송을 수행하는 하드웨어가 구성되어 있음을 의미한다.
콤마 표시는 두 마이크로 연산이 관련이 없기 때문에 병렬로 처리하라는 의미이다.
하드웨어는 소프트웨어에 의해 동작한다.
근데 소프트웨어는 시간에 따라 업데이트가 되는데 그 때마다 하드웨어도 바꿔야하면 비효율적이다.
때문에 하드웨어와 소프트웨어는 독립적이여야 한다.
연결 복잡도가 장치 수의 제곱에 비례한다.
가장 간편한 방법이지만, 확장성이 떨어진다.
공용선에 의한 연결이다.
가장 가성비가 높은 연결 방식이다.
관리를 위한 다양한 방법이 제시된다.
멀티 플렉서를 활용한 버스와 비슷하지만 enable을 사용한다는 점에서 다르다. -> 버퍼에 사용된다.