컴퓨터 구조 (Computer Science) (2)

  • by

플립 플롭 및 메모리 동작 이해

●NOR 게이트 2개를 조합하여 만들 수 있다

● flip-flop(플립플롭): 데이터를 저장하는 조합 논리 회로

○ 최초의 스위치를 누르면 점등하고, 스위치를 꺼도 점등한 채로 됩니다.

○ 두 번째 스위치를 끄면 불이 꺼지고 스위치를 끄더라도 사라진 상태로 유지됩니다.

● 스위치를 열고 닫을 수 있습니다.

○ 켜짐: 최근 첫 번째 회전 스위치가 켜졌습니다.

○ 불이 사라졌습니다: 최근 두 번째 스위치가 켜져 있습니다.

※전기를 앞에 넣었다는 사실을 기억할 수 있게 되었다

●RS플립플롭


○ Q는 output, Q ‘는 Q의 역값

○ 단, S와 R이 1인 상태는 피하도록 설계(Q와 Q’가 양쪽 모두 0이 되기 때문에)

● Level -triggered flip-flop


○ RS 프리플롭에 Hold That Bit이라는 이름으로 조합 논리 회로 추가

○ Hold That Bit이 1인 경우에만 Data가 1일 때 출력값에 적용

●D타입 플립플롭


○ R/S머리(input)를 Data(1개의 input)로 바꾸기

○ R/S 양쪽 모두 1 의 경우는 피하도록 설계하기로 한다

○ R / S 모두 0이면 Q 값에 영향을주지 않으므로 삭제

● Level-triggered D-type flip-flop

○ D 플립 플롭에 트리거 설치

○D는 데이터를 의미

○ Level-triggered는 Hold That Bit이 1인 경우에만 Data 값을 저장한다는 의미

○RS플립플롭으로 R/S 모두 1, 0의 경우를 피하도록 설계한 조합 논리회로


8×1 메모리 동작 및 구성 이해

1비트 래치

○ level-triggered D-type flip-flop

○ Data In이 데이터를 넣을 때 Write도 1이 되어야 합니다.

○1bit를 일시적으로 저장할 수 있는 메모리

●8비트 래치

○ Write가 1이면 8bit Data Inputs가 8bit Data Outputs에 저장됩니다.

○ Write가 0이면 8bit Data Outputs 값이 유지됩니다.

●8-to-1 셀렉터

○8비트 데이터로부터 특정 비트값만 출력

○ 8개의 1bit 래치 중에서 1개의 데이터 출력 신호를 선택할 수 있다


●3-to-8 디코더

○ 8개의 출력 중 V 스위치로 1개의 출력 이외에는 0

○Write가 1, V스위치로 특정의 출력을 선정, Data In의 값이 특정의 latch에 기입된다


● 완전한 8비트 래치 회로

○3-to-8 디코더와 8-to-1 셀렉터로 구성(address)

○S0, S1, S2가 디코더와 셀렉터에 동일하게 적용(데이터를 읽고 쓸 수 있는 주소)

○ Write가 1이면 Address에 Data In 값이 기록됩니다.

○ Data Out은 항상 Address에 해당하는 값을 출력합니다.


● RAM(Random Access Memory)

○ 완전한 8비트 래치 회로가 RAM

○3-to-8 디코더와 8-to-1 셀렉터로 구성

○ 3 Address가 있으면 8개 중 1개의 비트를 선택하여 쓰거나 읽을 수 있다

●8×1 RAM

○ 8비트 중 하나의 특정 비트를 쓰고 읽을 수 있는 메모리

○ Memory: 데이터 저장 가능

○ Read/Write: 특정 공간에 새로운 데이터를 저장, 읽기 가능

○ Random Access: Address 지정에 의해 특정 공간값 액세스 가능, 한편, 어느 메모리는 순차 액세스만 가능


64K 메모리 동작 및 구성 이해

● RAM 어레이

○8×1 RAM을 2개 뜨개질

○Dara In은 각 8×1 RAM에 개별적으로 입력이 들어간다

○ Address와 Write는 2개의 8×1 RAM에 동일하게 입력이 들어간다


●8×2 RAM 어레이

○ 8개의 데이터를 저장하고 읽지만 각 데이터는 2비트


●16×1 RAM 어레이

○ 8 X 2 RAM 어레이 구조에 Select 및 1‑to‑2 Decoder/2‑to‑1 Selector 추가

○ 즉, Select는 네 번째 주소 역할을 합니다.

○ 16 개의 데이터를 저장하고 읽지만 각 데이터는 1 비트입니다.


●m*n RAM array

○ 대량의 데이터를 저장하는 RAM 어레이 생성

○ 8 X 1 RAM을 복수 접속해, 복수의 Select로 Decoder/Selector를 구성하면, 많은 데이터를 읽어들여, 저장할 수 있다


● 64K RAM

○ Address 수 / Data In / Out 수로 RAM 어레이 생성

○ 65,536(2의 16승) X 8 bits

○2의 16승 ――>16은 2 bytes, byte 단위가 편하기 때문에


Accumulator의 동작 및 구성 이해

● 클리어가 1인 경우 Q출력은 0이 됩니다.

● Flip-flop 값을 삭제할 수 있습니다.

● 데이터에 어떤 입력이 있어도 클리어 입력으로 출력값 삭제

●8-Bit Adder와 8-Bit Latch로 구성

○클리어 스위치는 클리어 입력에 들어간다

○ Add 스위치는 Clock 입력으로 들어갑니다.

○ 8-bit Adder로 가산이 계산되고 이 값이 8-bit latch에 들어가려면 Add 스위치를 누르면 8-bit latch에 저장된다.


디지털 컴퓨터 및 프로그래밍 정보

● Program Counter (PC)

○ 16-Bit Counter: 1씩 증가하는 조합 논리 회로

● 여러 숫자를 추가하고 싶을 때

○ 각 숫자를 0000h부터 순차적으로 씁니다.

Control Panel에서 Takeover 스위치를 1로 설정 한 후 각 숫자를 각 주소에 씁니다.

○ Takeover 스위치를 0으로 설정하여 더 이상 Control Panel이 RAM을 제어하지 않도록 합니다.

○ PC의 Clear 스위치가 0이 되면 PC는 0000h에서 RAM에서 데이터를 가져옵니다.

○ Adder가 값을 더합니다.

○ 클럭(Oscillator)이 0과 1로 바뀔 때마다 PC 값이 증가합니다.

자동화

○ 000h 주소에서 데이터가 저장됨

○ 세 개를 더하고 두 개를 더하고 세 개를 더한다고 가정합니다.


● Programming

○ 각 주소에 대응하여 Load, Add, Store를 의미하는 값을 작성해야 한다.

○ RAM을 분리하고 명령을 의미하는 값을 순차적으로 넣으면 코드를 실행할 수 있습니다.


○h는 Hex(16진수)를 의미

○ 이하와 같이 각 명령을 의미하는 숫자를 작성해, 각 주소에 맞는 코드를 넣는다

○ 명령 번호: Instruction Code, Operation Code 또는 opcode


● Load 및 Store 명령

○ Load: 2-to-1 Selector로 Data를 Add하지 않고 즉시 8-bit Latch에 넣기

○스토어: 8비트 래치 출력을 64Kx8 RAM에 즉시 저장(Write 스위치를 1로 설정)


레지스터 및 프로그래밍 정보

● Instruction Set 및 코드

○ 소프트웨어: 코드 + 데이터

○ 소프트웨어 엔지니어: 코드를 작성하는 사람

○ Machine language : CPU는 Instruction code를 작성하고 제공합니다.

○ 컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러를 통해 CPU가 제공하는 Instruction code를 기반으로 변환됩니다.

● 컴퓨터의 CPU 기본 구조


○ CPU에 레지스터라는 저장 공간이 있습니다.

빠른 실행

○ PC(Program Counter): 다음에 실행할 명령어 주소를 가리키는 레지스터

○ IR (Instruction Register) : 최신 페치 된 명령 아카이브 레지스터

○ 어큐뮬레이터(ACC, Accumulator): 데이터 임시 저장 레지스터

○ MAR (Memory Address Register) : CPU가 메모리 참조 용으로 유지하는 데이터 주소가있는 레지스터

○MBR(Memory Buffer Register): CPU가 메모리에서 읽거나 저장하는 데이터 자체를 저장하는 레지스터

CPU 파이프라인 정보

● 현재 컴퓨터의 CPU 기본 실행 구조

○ Instruction Fetch : 실행할 명령을 메모리에서 읽고 CPU로 가져옵니다.

– PC가 가리키는 주소를 MAR로 보내기

– MAR에 기록된 주소를 메모리에서 읽고 MBR로 전송

– MBR의 명령을 IR에 저장

– 다음 명령을 가리키도록 PC는 주소 값 증가

○ Instruction Decode: 페치된 명령어에 포함된 데이터 가져오기 및 명령어 디코딩

○ Instruction Execution: 명령 실행

– MBR 데이터와 ACC(Accumulator) 데이터로 연산 후 ACC(Accumulator)에 저장

○ Write Back: 실행 결과 저장

●현재 컴퓨터의 CPU 명령 구조

○ CPU마다 방식은 조금씩 다를 수 있지만, 기본적으로 하나의 명령은 opcode + argument(operand) 구조를 가질 수 있다

○ 3E는 사전에 약속된 load 명령, 이 때 바로 계속되는 데이터는 operand

○ load 명령에서 operand는 데이터가 있는 주소입니다.

○ 따라서 operand 주소에서 데이터를 검색하고 약속 된 레지스터에 저장

● CPU 성능을 향상시키는 기술 – 파이프라인

○ 파이프라인: 한 작업에 필요한 사항을 세부적으로 나누어 동시에 다른 세부 작업을 수행하는 기술

○ Fetch Stage (Instruction Fetch/Decode)

○ Execution Stage (Instruction Execution)

○명령 서랍(IF:Instruction Fetch)

○명령 해독(ID:Instruction Decode): 인출된 명령 해석

○ 오퍼랜드 페치(OF:Operand Fetch): 메모리로부터 데이터를 페치

○명령 실행(EX:Execute)

○실행 결과 저장(SR:STore)


CISC, RISC CPU 이해 및 컴퓨터 구조 정리

● CISC의 특성

○명령의 포맷이나 길이에 관한 규칙이 없다

○ 하나 이상의 사이클로 명령 (상세 작업) 실행

○ 모든 명령이 얼마나 걸리는지 시간 예측이 어렵습니다.


●RISC의 특성

○명령의 포맷과 길이 고정

○ 하나의 사이클로 명령 (상세 작업) 실행

○ 모든 지령 시간 예측 가능


● CISC/RISC CPU

○ 대표적인 CISC CPU: 인텔 CPU

○ 대표적인 RISC CPU: ARM/스마트폰, 임베디드, IoT 기기

● 메모리

○ 메모리가 높고 성능을 높이기 위한 전략

○비싼 메모리는 CPU의 바로 옆에, 짧게

○ 느린 메모리는 먼 곳에 그냥 크다.

○ 등록 : CPU 내에서 데이터 저장

○SRAM: L1, L2, L3 캐시

– 최대한 많이 사용하는 메모리의 데이터를 넣어 메모리까지 액세스하지 않고 CPU가 읽을 수 있도록 한다

○ DRAM: 메모리

○SSD/HDD(하드 디스크):PC의 전원을 꺼도 데이터를 보존

●DMA(Direct Memory Access)

○ CPU가 캐시까지는 데이터를 취득하는데 관여하지만 (Instruction Fetch)

○ 메모리, SSD로부터 데이터를 취득할 때까지 관여하면 CPU 활용도가 낮아진다

– DMA로 하고 메모리, SSD로 데이터를 관리하면 CPU는 이 시간을 명령 실행에 더 쓸 수 있다

● IO Devices

○ Input/Output Devices

– CDROM, 마우스, 키보드

– 프린터

– 네트워크 카드

○ 버스를 통해 IO 디바이스로 데이터 송수신