CS/디지털 논리회로

<컴퓨터구조> 1강 / 2강

Entkommen 2024. 9. 5.
728x90

선수과목인 디지털 논리회로를 들어야 수강할 수 있다. 

 

경험상 디지털 논리회로의 경우 초반부에 집중해서 듣는 것이 중요했다 

(다른 과목도 비슷하지만, 그 중 난이도가 유독 높았던 기억이 있다.) 

 

따라서 컴퓨터 구조도, 교수님도 같은데다가 비슷한 과목이다보니 

 

초반부에 힘을 싣고 열심히 공부해야 할 것 같다. 

 


 

입력장치 / 중앙처리장치 (CPU) / 기억장치 / 출력장치 / 시스템 버스 

(컴퓨터 시스템(곧 EDPS) 의 구성 요소) 

 

이 중 CPU를 많이 설명함 

 

 

컴퓨터 시스템 : 전자식 데이터 처리 시스템(EDPS: Electronic Data Processing System)

논리 게이트 : 디지털 논리회로를 구현하는 데 기본적으로 사용되는 요소

불대수(Boolean algebra) : 0 또는 1의 값을 갖는 논리변수와 논리연산을 다루는 대수

불함수 : 논리변수의 상호관계를 나타내기 위해 불변수, 불연산기호, 괄호 및 등호 등으로 나타내는 대수적 표현

진리표(truth table) : 논리변수에 할당한 0 과 1의 조합 리스트

 

 

1세대 진공관 : 어셈블리어 일괄처리 

2세대 트랜지스터  : 고급언어 실시간처리 

3세대 집적회로(IC) : 시분할 처리
4세대 LSI :인공지능 전문가 시스템

차세대 VLSI  : 병렬처리 자연어처리 

 


 

컴퓨터 의 하드웨어적인 측면 인 

입/출력 , 기억, 중앙처리장치, 시스템 버스에 대해 다루는 과목임 

 

논리회로의 구분

 

조합논리회로 : 저장요소가 없음(가산기, 디코더)
순서논리회로 : 저장요소가 있음(레지스터, 카운터) 

 

(저장요소의 예 :F/F) 

 

논리게이트

- 디지털 2진 정보만 다루는 소자

- 디지털 논리회로를 구현하는데 기본적으로 사용되는 요소

- 2진 논리연산을 수행하는 데 사용 

 

2진 논리연산 (즉 AND 점으로 표시 / OR 플러스기호로 표시 / NOT  줄 긋는거로 표시 의 기본연산) 

 

(기본적으로 이 단계에서 논리게이트와 논리회로 구분의 경우 디지털 논리회로에서 다룬 개념들임 :복습하는 의미로 좋은 것 같음) 

 

기본 논리 게이트 : AND OR NOT

기타 논리 게이트 : NAND / NOR / XOR / XNOR 

 

불대수

- 0 또는 1의 값을 갖는 논리변수와 논리연산을 다루는 대수 

 

불함수 

입출력변수의 관계를 불변수 / 연산기호 / 괄호 / 등호 로 표시 

F = XY +.. 등 

곱으로 이루어진 최소항

합으로 이루어진 최대항 

 

 

진리표를 통해 불함수를 유도 

 

부울 함수에 대한 진리표는 하나 

진리표를 만족하는 부울함수는 여러개 

따라서 논리회로도가 여러개 만들어질 수 있다. 

 

그 중에서 '단순'한 논리회로도가  좋다 

(부울 함수의 간소화가 중요함) 

 


 

출력 F가 1값이 나오는 것들로 , 최소항들의 합으로 표현 

 

대수적 간소화 / 카르노 도표를 활용하 간소화 

 

정규형 -> 표준형 으로의 간소화 

 

n변수 부울함수 / 2의 n승의 최소항 

 

 


 

전반적으로 전 학기 과목이었던 디지털 논리회로의 복습을 위주로 하는 강의였다 

한 번 훑고 넘어가기에 좋았던 것 ㄱ타다 .

 

 


 

2강 

 

조합논리회로 / 순서 논리회로 

 

1. 조합논리회로 : 현재의 입력에 의해서만 출력 이결정

2. 순서논리회로 : 저장요소 추가. (F/F)  즉 조합논리회로 + 저장요소 

 

1) 분석 / 2) 설계 

 

기본연산회로

 

가감승제의 산술연산회로

 

가산기와 감산기를 중심으로 

 

 

입 - 중앙처리장치 - 기억 - 출력

---------------시스템버스-----------

 

오늘 배운 논리회로등은 CPU를 구성함 

컴퓨터는 EDPS . 즉 계산이 핵심. 

 

순서논리회로의 대표적인 예시 : 레지스터 (연산속도 향상을 위한 CPU 외부가 아닌 내부에 위치한 , 외부의 기억장치와는 다른 종류의 기억장치 ) 

 

 

1) 가산기

2진수 덧셈 수행 조합논리회로 

반가산기 : 두 비트 사이의 덧셈

전 가산기 : 세 비트의 덧셈(올림 수) 

 (합 S 올림수 C) 

 

2) 감산기

2진수 뺼셈 

반감산기 : 두 비트사이의 뺼셈

전감산기 : 세비트 사이의 뺼셈 

 (차 D 빌림수 B)

 

반가산기와 반감산기 유사함 (notgate 하나 차이) 

 

전감산기 / 전가산기 역시 not gate 차이임 

전감산기 HS HS 두개 합친것 

전가산기 HA hA 두개 합친것 

 

3) 가감산기 

이제 덧셈기만 가지고도 감산을 표현할 수 있게 됨(not 차이만 나니까) 

 

FA 4개 병렬 배치 (4비트 가감산기) 

S = 0 이라면 가산을 수행

S = 1이면 감산을 수행 

 

 

MSI 소자를 이용한 조합논리회로 

 

게이트 수의 최소화를 위한 집적회로(IC)

SSI MSI LSI VLSI 

 

중규모로 만든 조/논의 예

인코더 / 디코더 / 멀티플렉서 / 디멀티플렉서 

 

CPU 구성 조/논의 대표적인 예시가 디코더와 멀티플렉서임 (즉 더 중요함) 

 

인코더 : (실제로는 안씀) 부호화기 

ex) 문자/숫자/기호 를 2진을 변환시킴 A =>65 => 이진수의 예처럼

 

2^n => n 출력을가짐

 

디코더 : (더 중요함) 인코더의 반대 개념 / 복호화기 

부호화 입력을 받아 부호화아닌 출력을 내보냄 

 

기억장치의 주소를 선택하거나, 명령어 해독하는데 사용됨 

 

n비트의 2진코드를 받아서 2^n 개의 출력을 가짐

ex) 2 x 4 디코더 

3 x 8 .. 등등 

 

00이 입력일 때 출력으로 0001 을 내놓는다 .

01을 받을 때     출력으로 0010 을 내놓는다 . 처럼 

 

멀티플렉서 (MUX) == 키워드는 '선택' 

여러개 입력 중 하나만 선택 , 여러개의 레지스터중 하나 선택 

 

2^n 개의 입력을 위해선 n 개의 선택변수가 있어야함

선택신호(=선택변수) 논리회로도 MUX 표시 하단에 위치한 갯수 

 

공통버스 시스템 및 여러 레지스터 중 하나를 선택하는 데 사용 

 

4 x 1 MUX  / 선택신호 S1 , S2 두개 필요 

8 x 1 MUX / 선택신호 S1, S2, S3 세개 필요 ( 예를 들어 S1, S2, S3 가 000 이면 D1을 출력 하는 방식) 

16 x 1 MUX 

..

 

디멀티플렉서 == 키워드는 '분배' 

디코더와 유사한 역할 

입력 하나를 여러개로 나눠줌 

 

 

순서논리회로

 

비동기 / 동기

 

비동기는 별로 안씀 

 

동기순서논리회로(일반적으로 사용) 

=> F/F를 사용한다 , 

 

F/F 플립플롭 

한 비트의 2진 정보를 저장할 수 있음 

(상태를 바꾸라는 지시가 있을 때까지 현재의 2진 상태를 유지함. 클럭 신호에 의해 출력상태를 바꾼다) 

 

SR 래치(비동기) 

 

동기 RS F/F , D F/F , JK F/F , T F/F(동기식) 

 

R/S 는 R과 S가 1이면 미정상태가 생김 

이것을 해결하기 위한

 

D, JK 가 만들어짐 

D (S, R을 1이 안되게 만든것)

JK(가장 많이 사용되는 F/F) 

T(JK 플립을 변화시킴 , Toggle,)

 

 

이후에 레지스터와 연계 

 

레지스터 : 데이터를 일시 저장 및 전송 

 여러개 입력 = 병렬 입력 

 여러개 출력 = 병렬 출력 

 한개 출력 / 입력 = 직렬 출력 / 입력 

 

1) 데이터 적재 레지스터 

일반적으로 D F/F 사용해서 구성 함 

(직렬적재 / 병렬적재에 따라 나눔) 

 

2) 시프트 레지스터 

비트단위로 정보의 위치를 이동 / 클럭펄스에 따라 한단씩 이동함 

오른쪽 왼쪽 차이 .. 

 

카운터

레지스터의 특수한 형태 / 순서논리회로

T나 JK 활용 

4비트 동기식 2진 카운터(상향계수) 0부터 15까지 커지면서 카운트 

동기식(클럭이 동시에 작동?) 

 

 

 

컴퓨터 명령어 

 

입력(컴퓨터명령어) 출력(수행결과) 

 

컴퓨터가 수행해야하는 일을 나타내기 위한 

비트들의 조합. 일정한 형식을 가짐 

 

명령어 집합 

(CPU를 동작시켜주는 명령어들의 집합)

 

명령어 집합은 그 컴퓨터으 ㅣ구조적인 특성을 나타내는 가장 중요한 정보

(동일 계열의 컴퓨터는 같은 명령어 집합이 사용됨)

 

명령어는 필드라는 비트그룹으로 이루어지며

연산코드 / 오퍼랜드 필드로 구성 

 

연산코드 필드 : 처리 연산의 종류 

오퍼랜드 필드 : 처리 대상 데이터 또는 데이터 주소 

 

수행기능 

함수연산 / 정보전달 / 순서제어 / 입출력 

 


 

3강

명령여 형식 분류

 

1) 오퍼랜드의 기억장소에 따른 명령어 형식

 

2) 오퍼랜드의 수에 따른 분류 

 

오퍼랜드의 기억 장소에 따라 

 

1) 누산기를 이용 

     누산기를 가진 컴퓨터 구조에서 활용 

     ALU(산술논리연산장치) 

     ALU가 CPU의 유일한 연산장치인데, 거기로 값이 들어와야 계산을 하는데 

 

    AC(누산기, 레지스터의 일종으로 임시기억장치) AC가 있는 경우에 ("더해라" 라는 명령이)가 AC(누산기)에 저장되는 방식 

 

연산(ADD) || 10, 20 

이런식의 표현이면 10과 20을 더해라 

 

AC = accumulator 

 

ex ) ADD X  이렇게 X 하나만 있다면 묵시적으로 AC의값과 + M[X] 를 더하는 것임을 의미한다 (M[x}는 메모리의 X번지 

       STORE X : 누산기의 내용을 기억장치 X번지(즉 M[X])에 저장하라 ) 

 

2) 다중 레지스터 이용

     여러개의 레지스터를 가진 CPU를 가진 컴퓨터 . 

     

Register = R1, R2, R3 .. .

 

ADD R1, R2, R3 ; 

R1과 R2의 내용을 더해 R3로 전송해라. 라는 의미를 가짐 (약속마다 다르지만 교재에서는 좌측에서부터 우측으로 읽어나가는 방식) 

이 때, R1, R2 는 출발레지스터. R3는 도착레지스터라고 함 

 

ADD R1, R2 처럼 두개만 있을 때는 

R1과 R2를 더해서 R2로 보내라(즉, R2는 여기서 출발이자 도착레지스터로 쓰임) 

 

Register의 종류

1) 범용레지스터 : R1, R2, .. 

2) 특수용도 레지스터 : 누산기(AC) 와같이 특수목적 , Stack의 주소를 가진 SP(Stack pointer) 등  

 

 

3) 스택구조 이용 

 

스택구조 컴퓨터는 연산에 필요한 오퍼랜드를 기억장치 스택에 기억시켜야하고, 연산의 결과도 스택에 기억시키는 구조이다. 

 

"틀 안에 쌓이는 구조" 

 

"후입선출" 

 

즉 먼저들어간애 꺼내려면 나중에 들어간애부터 뺴야함 

 

Randam access와 다른 개념(직접 접근) 

 

SP(Stack pointer)에는 스택의 맨 위 주소가 저장되어있음 

 

TOS (top of stack) 

 

스택구조의 경우 계속 TOS TOS-1 을 반복해봐야 같은 행위 반복이고 . 해서

간략하게 ADD만 기술함 

 

즉. 

 

ADD | X (누산기)

ADD | R1, R2 (다중 레지스터) 

ADD | R1, R2, R3 (다중 레지스터) 

ADD | (스택구조)   ---> 이때 이 말은 Tos와 Tos-1(맨위에서 두번째) 를 더해서 TOS(맨 위)로 보내라는 뜻 

 

이렇게 약속할 수 있다. 

 

같은 원리로 

PUSH X ; 라고 하면 M[x}를 TOS로 집어넣어라 하는 말임 

 

POP X ; TOS의 내용을 M[x] 로 뺴내라 

 

 

다시 위에 적은것을 보자 

 

기억 장소를 위에서 부터 각각 1주소 / 2주소/ 3주소 / 0주소 로 볼수 있다. 

 

그렇게 

 

"오퍼랜드 수"에 따른 명령어 형식 을분류 해볼 수 있다. 

ADD X ; 1주소 명령어 이면서 누산기 구조에 사용되는 명령어다. 라고 두개의 분류법으로 분류 가능 

 

3-주소 명령어 : ADD R1, R2, R3

2-주소 명령어 : ADD X, R1

1-주소 명령어 : ADD X 

0-주소 명령어 : ADD 

 

산술식 X = (A+B) x C 에대해 3주소 명령어를 이용한 프로그램 

 

ADD A,B,R1 ; A, B를 더해서 R1에 저장

 

 

2주소 명령어로 같은 산술식 프로그램

더 많은 줄이 필요함 

(명령어의 길이는 짧아짐) 

 

LOAD A,R1 

ADD B R1 

MUL C R1 

STORE R1 X 

이렇게 씀 

 

 

1주소 

 

LOAD A 

ADD B

STORE X

LOAD C

MUL X

STORE X 

 

이렇게 늘어남 

연산속도는 늘어나지만 비트수가 증가함 

 

 

 

주소지정방식 

 

프로그램 수행 시 오퍼랜드를 지정하는 방식

명령어의 주소 필드를 변경하거나 해석하는 규칙을 지정하는 방식 

 

어셈블리어 이용시 주소지정방식을 활용함 

(명령어의 수를 줄일 수 있는 효과적인 프로그래밍이 가능) 

 

유효주소 : 주소지정방식의 각 규칙에 의해 정해지는 오퍼랜드의 실제주소 

 

 

연산코드 || 주소지정방식(MODE) || 주소 혹은 오퍼랜드 

 

주소지정방식의 종류는 8가지가 있음

(의미주소지정방식 , 즉치주소지정방식, 직접주소지정방식, 간접주소지정방식, 레지스터주소지정방식, 레지스터간접주소지정방식, 상대주소지정방식(주어진 주소에 현재 포인터가 가진 주소 합침) , 인덱스된 주소지정방식 ) 

 

즉치주소 숫자앞에 # 붙임

직접주소 는 '주소' 

간접주소는 [대괄호 안에 표시] 그걸 다시 주소로 씀

상대주소는 $를 붙임 = 얘는 지정된 숫자 + 프로그램카운터의 주소에 해당하는 값을 AC에 저장함 

인덱스 주소 는 숫자(소괄호 R1) 이런식으로 표시됨 

 

이부분은 좀 어려워서 체크 해볼 필요가 있을듯 근데 뭐가 뭔지만 알면 되는거면 아주 어렵게 공부하지는 않아도 될 것 같음 

 

 

 

명령의 종류 

(CPU 회사에서 제공되는 매뉴얼을 기반으로 ) 

 

 

1. 데이터 전송명령어 

 

Load / Store / Move / Exchange / Push /Pop / Input /Output 

LD / ST/ MOVE / XCH / PUSH /POP / IN / OUT (이런 약자를 니모닉이라고 함) 

 

.. 

 

산술명령어도 있고

 

논리와 비트처리 명령어 

 

시프트명령어 

 

프로그램 제어 명령어 가 있음 

 

 

728x90