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

2023. 3. 11. 15:31zerobase/CS

728x90

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

    ● 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