책으로 컴퓨터 구조와 프로그래밍 읽기

메모리 구성 및 주소 지정

플립플롭은 개별 비트를 기억하는 데 유용하며 레지스터를 사용하면 여러 비트를 쉽게 저장할 수 있습니다.

하지만 더 많은 정보를 저장해야 한다면 어떻게 해야 할까요? (예: 다른 추가 결과 저장)

→ 많은 레지스터를 쌓은 후 디코더를 프리미티브로 사용하여 각 레지스터에 번호를 부여하십시오!

(이 번호를 주소라고 합니다)

→셀렉터를 사용하여 지정된 주소에 해당하는 레지스터의 출력을 선택하십시오!

==> 이러한 요소의 조합은 메모리 구성 요소를 만듭니다.

  • 랜덤 액세스 메모리(RAM)
    • 모든 위치에서 순서에 관계없이 쓰거나 읽을 수 있습니다.
    • 정적 RAM(SRAM) / 동적 RAM(DRAM)
      • 휘발성 메모리 – 전원이 꺼지면 데이터가 손실됨
    • 코어 메모리
      • 비휘발성 RAM – 고리 모양의 금속 조각에 비트를 저장합니다.
  • 읽기 전용 메모리(ROM)
    • 1회 쓰기 메모리(문자 그대로)

블록 장치

  • 운전하다

플래시 메모리 및 SSD

  • 플래시 메모리
    • 뮤직 플레이어 및 디지털 카메라와 같은 애플리케이션에 적합
    • EEPROM보다 빠르게 지울 수 있고 저렴하며 RAM과 같이 어디에서나 읽을 수 있습니다.

오류 감지 및 수정

다양한 요인(예: 우주선)으로 인해 비트가 잘못된 경우 → 어떻게 신속하게 감지하고 수정할 수 있습니까?

=> 패리티, ECC 메모리 바늘, 체크섬, 순환 중복 검사…

하드웨어와 소프트웨어 비교

논리 하드웨어를 만드는 것과 소프트웨어를 만드는 것의 차이점은 무엇입니까?

→ 거의 차이가 없습니다! (하드웨어는 설계하는 데 시간이 더 걸린다는 사실에 대해)

제4장 내부 컴퓨터 구조 – 컴퓨터 하드웨어는 어떻게 구성되어 있는가

컴퓨터 = 전자 부품의 다양한 조합으로 비트를 조작하는 회로

= 메모리(저장장치), 입출력, CPU(중앙처리장치)로 나눌 수 있다.

저장

컴퓨터는 자신이 조작하는 비트를 저장할 장소가 필요하며 이를 메모리라고 합니다.

그것은 일련의 집들과 같으며, 모두 같은 크기(1바이트)이고 각각 ​​고정된 수의 비트를 저장할 수 있는 방이 있습니다!

읽기 메모리는 x바이트여야 합니다. (예: 32비트 컴퓨터 – 4바이트 청크, 64비트 컴퓨터 – 8바이트 청크)

최신 컴퓨터는 단일 정렬 액세스로 데이터를 읽을 수 있습니다.

사용하는 프로세서에 따라 0번째 바이트의 좌/우 위치가 다릅니다.

입구와 출구

예전에는 I/O 거리와 스토리지 거리를 분리하는 것이 합리적이었습니다.

그러나 메모리가 증가함에 따라 메모리 주소는 I/O를 지원하는 데 사용됩니다.

→ 표준 입/출력 슬롯의 경우 각 슬롯을 차지하는 장치는 할당된 주소를 사용합니다.

중앙 장치

실제 계산을 수행하는 컴퓨터 부분.


  • 산술 논리 장치(ALU)
    • CPU의 핵심 부품 → 산술 연산, 부울 대수 등의 연산을 할 수 있는 장치
    • 피연산자: 숫자를 나타내는 비트
    • opcode(opcode): ALU가 피연산자에 적용하는 연산자를 나타냅니다.
    • 결과: 연산자를 피연산자에 적용한 결과입니다.
    • 조건 코드: 결과에 대한 추가 정보를 포함합니다.
    • 왼쪽 시프트는 숫자의 모든 비트를 왼쪽으로 1비트 이동하여 가장 왼쪽 비트를 버리고 가장 오른쪽 비트에 0을 넣어 비어 있게 합니다(오른쪽 시프트는 그 반대).
  • 실행 단위
    • 메모리의 특정 위치에서 opcode와 피연산자를 검색하고 ALU에 수행할 작업을 알리고 결과를 메모리로 반환합니다.
    • 이 시점에서 실행 장치는 메모리에서 이러한 명령어를 찾습니다(예: 주소 10의 숫자를 12의 숫자에 더하고 결과를 14에 넣습니다)!
      (이러한 방식으로 실행되는 컴퓨터를 프로그램 저장 컴퓨터라고 합니다.)
    • 명령: 컴퓨터에게 무엇을 해야 하는지 알려주는 비트 패턴.
    • 프로그램 카운터: 실행 장치가 메모리에서 명령을 가져올 위치를 알 수 있습니다.
      • 메모리와 분리된 특별한 위치에 상주하는 일종의 레지스터

명령어 세트

  • 명령
  • 어큐뮬레이터
    • ALU에서 계산한 결과 저장
    • 메모리 위치의 값과 누산기의 값에 대해 연산을 수행하고 결과를 누산기에 넣습니다.
  • 주소 지정 모드
    • 직접 주소 지정: 사용할 주소를 명령어에 직접 입력
    • 간접 주소 지정: CPU는 명령의 값을 명령의 피연산자의 주소를 얻을 수 있는 메모리 위치를 가리키는 주소로 해석합니다.
    • Immediate addressing mode: 주소에 해당하는 비트를 값으로만 ​​취급(어큐뮬레이터에 상수를 쓸 때 사용)
  • 조건 코드 문
    • 조건 코드 레지스터의 값을 누산기에 복사하는 cca 명령을 추가할 수 있습니다.
    • 누산기의 값을 조건 코드 레지스터에 복사하는 acc 명령을 추가할 수 있습니다.
  • 분기 명령
    • 프로그램 카운터의 값을 변경할 수 있는 명령어 → 일부 코드를 선택적으로 실행!
  • 명령 집합의 최종 구성
    • 모드(어드레싱 모드) – 명령 코드 – 주소

최종 디자인

  • 명령 레지스터
    • 명령 실행 = 패치(메모리에서 명령 가져오기) – 실행(이 명령을 실행하는 방법)
  • 데이터 경로 및 제어 신호
    • 프로그램 카운터의 값을 메모리 주소 버스에 저장하는 방법과 메모리의 데이터를 명령어 레지스터에 저장하는 방법이 필요합니다.
  • 데이터 흐름 제어
  • RISC 및 CISC 명령어 세트
  • 그래픽 카드
    • 그래픽 카드