2023. 3. 11. 15:31ㆍzerobase/CS
플립플롭과 메모리 동작이해
● 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-type 플립플롭

○ R/S두(input)를 Data(하나의 input)으로 바꿔봄
○ R/S 둘다 1일 경우는 피하도록 설계하기로 함
○ R/S 둘다 0일 경우도 Q 값에 영향을 안주므로 삭제
● Level-triggered D-type flip-flop
○ D플립플롭에 트리거 설치
○ D는 Data를 의미함
○ Level-triggered는 Hold That Bit이 1일 때만 Data 값을 저장한다는 의미
○ RS 플립플롭에서 R/S 둘다 1, 0일 경우를 피하도록 설계한 조합논리회로

8×1메모리 동작과 구성이해
● 1 Bit latch
○ level-triggered D-type flip-flop
○ Data In이 데이터를 넣을 때, Write도 1이 되어야 함
○ 1bit를 일시적으로 저장할 수 있는 메모리
● 8 Bit latch
○ Write이 1일때 8 bit Data Inputs이 8 bit Data Outputs에 저장됨
○ Write이 0 이면 8 bit Data Outputs 값이 유지됨
● 8-to-1 selector
○ 8 bit 데이터에서 특정 bit 값만 출력하기
○ 8개의 1bit latch 중에서 하나의 데이터 출력 신호를 선택할 수 있음

● 3-to-8 decoder
○ 8개의 출력 중, V 스위치로 단 하나의 출력 이외에는 0
○ Write가 1, V 스위치로 특정 출력 선정, Data In의 값이 특정 latch에 쓰여짐

● 온전한 8 bit latch 회로
○ 3-to-8 decoder와 8-to-1 selector로 구성(address)
○ S0, S1, S2가 decoder와 selector에 동일하게 적용(데이터를 읽고 쓸 수 있는 address)
○ Write가 1이면, Address에 Data In 값이 씌여짐
○ Data Out은 항상 Address에 해당하는 값을 출력

● RAM(Random Access Memory)
○ 온전한 8 bit latch회로가 RAM
○ 3-to-8 decoder 와 8-to-1 selector로 구성
○ 3 Address 가 있으면 8개중 하나의 비트를 선택해서 쓰거나, 읽을 수 있음
● 8×1 RAM
○ 8개 비트 중 1개의 특정 비트를 쓰고, 읽을 수 있는 메모리
○ Memory: 데이터를 저장할 수 있음
○ Read/Write: 특정 공간에 새로운 데이터 저장, 읽기 가능
○ Random Access: Address 지정을 통해 특정 공간 값 접근 가능, 반면 어떤 메모리는 순차 접근만 가능

64K메모리 동작과 구성이해
● RAM array
○ 8×1 RAM을 두 개 엮음
○ Dara In은 각 8×1 RAM에 별도로 입력이 들어감
○ Address와 Write는 두 8×1 RAM에 동일하게 입력이 들어감

● 8×2 RAM array
○ 8개의 데이터를 저장하고 읽는데, 각 데이터는 2 bits임

● 16 × 1 RAM array
○ 8 X 2 RAM array 구조에, Select 와 1‑to‑2 Decoder/2‑to‑1 Selector 추가
○ 즉, Select 는 4번째 Address 역할을 함
○ 16 개의 데이터를 저장하고 읽는데, 각 데이터는 1 bit 가 됨

●m*n RAM array
○ 많은 데이터를 저장하는 RAM array 만들기
○ 8 X 1 RAM 을 여러개 연결하고, 여러 개의 Select로 Decoder/Selector를 구성하면 많은 데이터를 읽고, 저장할 수 있음

● 64K RAM
○ Address 수 / Data In/Out 수 로 RAM array 만들기
○ 65,536(2의 16승) X 8 bits
○ 2의 16승 ‑‑> 16은 2 bytes, byte 단위가 편하기 때문

Accumulator 동작과 구성이해
● Clear가 1이면, Q output은 0이 됨
● Flip-flop 값을 삭제할 수 있음
● Data에 어떤 입력이 오든간에 Clear입력으로 output 값 삭제
● 8-Bit Adder와 8-Bit Latch로 구성
○ Clear 스위치는 Clear 입력에 들어감
○ 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 값이 증가한다.
● Automation
○ 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에 넣음
○ Store: 8‑bit latch의 Output을 바로 64Kx8 RAM에 저장 (Write 스위치를 1 로 만듬)

레지스터와 프로그래밍 이해
● Instruction Set 과 코드
○ Software: Code + Data
○ Software Engineer: Code를 작성하는 사람
○ 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 바로 옆에, 단 작게
○ 느린 메모리는 먼 곳에, 단 크게
○ Register: CPU 안에서 데이터보관
○ SRAM: L1, L2, L3 캐쉬
- 최대한 가장 많이 사용하는 메모리의 데이터를 넣어놓아서, 메모리까지 접근하지 않고 CPU가 가져다 쓸 수 있게 함
○ DRAM: 메모리
○ SSD/HDD(하드디스크): 컴퓨터를 꺼도 데이터보전
● DMA(Direct Memory Access)
○ CPU가 캐쉬까지는 데이터를 가져오는데 관여하지만(Instruction Fetch)
○ 메모리, SSD에서 데이터를 가져오는데까지 관여하면 CPU 활용도가 낮아진다
- DMA라고 만들어서 메모리, SSD에서 데이터를 관리하면 CPU는 이 시간을 명령실행에 더 쓸 수 있다
● IO Devices
○ Input/Output Devices
- CDROM, Mouse, Keyboard
- Printer
- Network Card
○ Bus 를 통해 IO Device에 데이터를 송수신
'zerobase > CS' 카테고리의 다른 글
Cross Browsing(크로스 브라우징) (0) | 2023.03.30 |
---|---|
운영체제(3) (0) | 2023.03.15 |
운영체제(2) (1) | 2023.03.15 |
운영체제(1) (0) | 2023.03.15 |
컴퓨터 구조(Computer Science)(1) (0) | 2023.03.05 |