학습요약7>16강 컴퓨터 구조2

개프꼬·2023년 2월 9일
0

※블로그 내용은 저 '개인'의 기준으로 더 필요하다고 생각되는, 또는 한번 더 짚어보는 의미로 직접 필기한 것입니다. 수희 혼자 볼라고 쓴 블로그


8.플립플롭과 메모리 동작이해>1비트 저장.

★어렵다.

  • 플립플롭이란? 메모리! (스위치를 껐다 키면서 전기가 저장하는 느낌.)
    데이터를 저장하는 조합 논리회로.

  • 두번째 스위치를 킨후 끄면?
    -첫번째 스위치를 키면 불이 켜지고, 스위치를 꺼도 불은 켜진채로 지속
    -두번째 스위치 끄면 불이 꺼지고 스위치를 꺼도 불은 꺼진채로 지속
    스위치를 키고 끄고 저장할수 있다.
    -불이 켜져 있다: 첫번째 스위치가 켜졌었다.
    -불이 꺼져있다. 두번째 스위치가 꺼졌었다.

전기를 전에 켰다는걸 회로가 기억.

  • RS 플립플롭(R-S(Reset-Set) flip-flop
  • Hold That Bit있는것을 Level-triggered flip-flop이라 함.
    클럭을 지원.
  • D-type flip-flop : R/S두인풋을 하나의 인풋으로 바꿔봄
  • Level-triggered D-type flip-flop
    D는 data를 의미.Level-triggered는 홀드댓빗이 1일때만 data를 저장한다는 의미.
  • RS 플립플롭에서 R/S둘다 1,0일 경우를 피하도록 설계한 조합논리회로.

★이 논리회로를 기본으로 메모리가 구성됐다. 1비트 저장할때 최소부품을 설명


9.8x1 메모리 동작과 구성이해>8비트 저장.

Level-triggered D-type flip-flop는 1 bit의 latch라고 이야기함

2에 8승 8비트. 래치를 8개 연결.

  • 8-to-1 seletor
    8비트 데이터에서 특정 비트 값만 출력하기
    하나의 백열 전구로 8개 각 비트의
    어디에서 읽어오기. 주소라고 함. 특정 주소를 가르킴.
    사용해서 8개의 1비트래치 중에 하나의 데이터 출력 신호를 선택 가능.

  • 3-to-8 decoder
    8개 출력중, V 스위치로 단 하나의 출력 이외에는 O
    write가 1, V 스위치로 특정 출력 선정, data in의 값이 특정 래치에 쓰여짐
    8공간중에 한공간만 쓸수 있게 함.

  • 온전한 8 비트래치 회로
    3-to-8 decoder와 8-to-1 seletor로 구성(이게 바로★ address 주소임)
    s0,s1,s2가 decoder와 selector에 동일하게 적용(데이터 읽고 쓸수있는 주소)
    write가 1이면 address에 data in값이 씌여짐
    data out은 항상 address에 해당하는 값을 출력
    ★8개 중에 특정 주소에 데이터 읽고 쓰기 가능. =온전함

  • RAM(random access memory) 메모리.
    위에서 말하는 온전한 8 비트래치 회로가 ram이다.
    3-to-8 decoder와 8-to-1 seletor로 구성
    3 주소가 있으면 8개중 하나의 비트를 선택해서 쓰거나 읽을 수 있다.

  • 8x1 ram:
    8개 비트 중 1개의 특정 비트를 쓰고 읽을 수 있는 메모리
    특징1 - 메모리: 데이터를 저장할 수 있음
    특징2 - read/write :특정 공간에 새로운 데이터 저장, 읽기 가능
    특징3 - random accessL address지정을 통해 특정 공간 값 접근 가능

반면 어떤 메모리는 순차 접근만 가능
예로 100주소 읽기 위해 99를 읽어야되;


10. 64k 메모리 동작과 구성 이해> 8x1=1비트 / 8x2= 2비트

  • 8x1 램을 두개 엮어보자, 8x2 ram arry.
    데이터 인은 각 8x1램에 별도로 입력이 들어감
    8x2램 arry는 8개의 데이터를 저장하고 읽는데, 각 데이터는 2비트임.
    16x1 = 16개 공간중 하나 선택 가능 읽고 쓰고 저장. 2에 4승 .

이런걸 계속 이어 붙이면 m*n ram arry을 만들 수 있다.
많은 데이터를 저장하는 ram arry. 8x1 램을 여러개 연결하고 여러개의 select로 decoder/seletor를 구성하면 많은 데이터를 읽고 저장 가능

참고)
1024 킬로바이트=1 메가바이트
1024 메가바이트= 1기가 바이트
킬로비트/메가비트는 네트워크에서 많이 사용

  • 64k ram은 54,536(2의 16승) x8비트
    2의 16은 16은 2바이트s, 바이트 단위가 편하기 때문
    삼성이 이거 만들면서 반도체 선도함.

11. Accumulator 동작과 구성이해>

  • accumulator덧셈하는 기기(가산기).

실제로 어떡해 컴터에서 덧셈 되는지. 덧셈을 계산 해보자

-클리어를 1로 만들어 기존 값을 삭제
-스위치로 a데이터를 넣고 add를 누름
b는현재 아무 값이 없는 상태
결국 a의 데이터는 b에 들어감
-스위치로 다시 다른 데이터를 a에 넣고 add 누름 =☆결국 B=A+B

메모리 계층 - 컴터 구조 이해

  • 레지스터는 cpu가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치

12. 디지털 컴퓨터와 프로그래밍 이해>

  • 프로그램 카운터(PC) - 16비트 카운터: 1씩 증가하는 조합논리회로
    여러숫자를 더하고 싶다면? 클럭이 0과 1로 변할때마다 pc값이 증가
    automation은 000h주소부터 데이터 저장되어 있음.

  • 프로그래밍: data & code
    각 주소에 대응해서 load, add, store를 의미하는 값을 만들어야함
    ram을 분리하여, 명령을 의미하는 값을 순차적으로 넣으면 코드를 실행가능
    h는 hex(16진수)를 의미
    명령 숫자: instruction code, operation code, 또는 opcode라고 함

  • load와 store 명령
    load: 2-to-1 selector로 data를 add하지 않고 바로 8비트 래치에 넣음
    store: 8비트 래치의 output을 바로 64k x8 ram에 저장(쓰기 스위치를 1로 만듬)
    우리는 고급언어로 쓰는게 코딩임.


13. 레지스터와 프로그래밍 이해>소프트웨어 부분

  • instruction set와 코드_ 소프트웨어:코드 + 데이터
    소프트웨어 엔지니어: 코드를 작성하는 사람
    머신 language: cpu는 instruction code를 만들어놓고 제공함.
    컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러 통해 cpu가 제공하는
    instruction code를 기반으로 변환 됨.

  • 대표적인 언어: c언어, java 언어 등

  • instruction code를 약자로 만들기라도 하면

    예시 = LOD A, [1003h]
    LOD는 10h의 instruction code를 나타내는 약자
    a는 Accumulator를 나타내는 약자,
    1003h 주소에 있는 데이터를 로드해서 Accumulator에 넣어라란 뜻.

    begin: LOD A,[1005h]- 코드 재작성시 주소 변경 되므로 이름 붙이기.
    고급 언어에서는 함수와 변수에 이름을 붙이는 작업이 됨.


  • 폰노이만 구조=현 컴퓨터 구조

    • 컨트롤 유닛 : 프로그램 카운터
    • ALU: 가산기+ 논리연산+Register

  • 컴퓨터의 cpu기본 구조

    1. cpu에 레지스터라는 저장공간이 있음(빠른실행)
    2. pc(프로그램 카운터) : 다음 실행할 명령어 주소를 가리키는 레지스터
    3. ir(instruction register): 가장 최근에 인출한 명령어 보관 레지스터
    4. 누산기(ACC, Accumulator): 데이터 일시 보관 레지스터
    5. MAR(메모리 address register): cpu가 메모리 참조위해 보관하는 데이터 주소를 가진 레지스터
    6. MBR(메모리 Buffer register): cpu가 메모리로부터 읽거나 저장할 데이터 자체를 보관하는 레지스터

14. cpu 파이프라인 이해>

  • 현 컴퓨터의 cpu 기본 실행 구조:
    1. instruction fetch: 실행할 명령어를 메모리에서 읽어 cpu로 가져옴
      pc가 가리키는 주소를 MAR에 보냄
      MAR에 적힌 주소를 메모리에서 읽어서 MBR에 보냄
      MBR에 있는 명령어를 IR에 저장
      다음 명령어를 가리키도록 PC는 주소값증가
    2. instruction decode: 인출한 명령어에 포함된 데이터 가져오고 명령어 해독
    3. instruction Execution: 명령어 실행.
      MBR의 데이터와 ACC(Accumulator)의 데이터로 연산후, ACC(Accumulator)에 저장.
    4. write Back: 실행 결과를 저장.
      실제 메모리에는 하나의 명령어와 필요 주소를 다 적어놓음.
      위 4가지 거쳐서 실행.



  • cpu성능을 높이는 기법- 파이프 라인
    하나의 작업에 필요한 일을 세부적으로 나누어서 동시에 다른 세부작업을 실행하는 기법

  • cpu단계 2가지
    Fetch stage(instruction Fetch/Decode) 인출. 해석하는 단계 하나로 묶
    Execution stage(instruction Execution) 실행하는 단계

더 줄이려면 단계를 세분화 하면 됨

  • 명령어 인출(IF : instruction Fetch)
  • 명령어 해독(ID : instruction Decode):인출된 명령어 해석
  • 오퍼랜드 인출(OF : Operand Fetch): 메모리에서 데이터 인출
  • 명령어 실행 (EX : Execute)
  • 실행 결과 저장(SR : Store)

이런 5단계말고 16단계도 있다. 5단계는 하나의 명령어를 실행시 5사이클이 걸린다

  • 사이클 : 1개의 세부작업을 하는 단위
    1Hz = 1 사이클 /sec
    최초 인텔 cpu 4004: 108,000사이클/sec
    (EX : Execute)단계에서 해킹인지 아닌지 판단.
    인텔 보안 패치 성능 저하. 파이프라인 타고 실행 되다 마지막에 보안에 이슈 있으면
    전체 취소! 그때까지 줄을 서서 실행되고 있는 나머지 코드도 다 실행 취소됨.
    따라서 그만큼 cpu사용을 낭비

15. cisc, risc cpu이해와 컴터 구조 정리> cpu 명령어를 정의하는 전략 - Risc vs Cisc

  • cisc(Complex instruction set computer):
    하나의 명령어 실행으로 가능한 한 많은 작업을 수행(복합 명령어)
    복합 명령어 수행을 위해 cpu 로직 회로 복잡도 증가
    하나의 명령어 실행 시간 증가

  • risc(Reduced instruction set computer):
    간단한 조합해서 실행하면 더 효율적이지 않음?
    복잡도는 적지만 코드가 길어질 수 있다.

  • cisc의 특성
    명령어의 포맷이나 길이에 관한 규칙이 없음
    하나 이상의 사이클로 명령어(세부 작업) 실행
    전체 명령이 얼마나 걸릴지 시간 예측이 어려움

  • risc의 특성
    명령어의 포멧과 길이 고정
    하나의 사이클로 명령어(세부 작업) 실행
    전체 명령 시간 예측이 가능

  • cisc / risc cpu
    대표적인 cisc cpu는 인텔 cpu
    대표적인 risc cpu는 ARM (스마트폰, 임베디드, ioT기기)
    오피코드가 달라서 컴파일 다르게 해야한다.

  • 메모리
    비싸서 성능을 높이기 위한 전략은 비싼 메모리는 cpu바로 옆에, 단 작게
    느린 메모리는 먼곳에, 단 크게

    레지스터 , ram , ssd

    • Register: cpu안에서 데이터 보관

    • SRAM: L1,2,3 캐쉬. 최대한 가장 많이 사용하는 메모리의 데이터를 넣어 놓아서 , 메모리까지 접근하지 않고 cpu가 가져다 쓸수있게함

    • DRAM: 메모리

    • SSD/ HDD(하드디스크): 컴터 꺼도 데이터 보전

  • DMA(Direct Memory Access)
    cpu가 캐쉬까지는 데이터를 가져오는데 관여하지만 (instruction Fetch)
    메모리, SSD에서 데이터를 가져오는데까지 관여하면 cpu 활용도가 낮아진다
    DMA라고 만들어서 메모리, SSD에서 데이터를 관리하면 cpu는 이 시간을 명령 실행에 더 쓸 수 있다.
    메모리 왔다갔다하면 시간 오래 걸려서 효율 떨어짐.cpu한테 다 맡기면 효율 안좋아.
    DMA에서 대신 가져오면 효율 굿.

  • io Devices
    인풋/ 아웃풋 디바이스: CDROM,Mouse,키보드,프린터,★Network Card
    Bus를 통해 io 디바이스에 데이터를 송수신



향후 cs지식 로드맵

필수 cs 기본 지식 항목
운영체제, 네트워크
자료구조/알고리즘 (코테 준비를 통해 별도 정리)
데이터베이스는 실무 프로그램 사용법을 익히면 됨

profile
개발자_프론트엔드_꼬리에 꼬리를 무는 호기심

0개의 댓글