컴퓨터 구조

컴퓨터 구조는 크게 두가지로 정리할 수 있다.

  1. 컴퓨터가 이해하는 정보

    가. 데이터(정보)

    나. 명령어(instruction)

  2. 컴퓨터의 물리적인 핵심 부품

    가. CPU

    나. 메모리

    1. RAM

    2. ROM(펌웨어 저장 등)

    다. 보조기억

    라. IㆍO시스템

메모리 → 현재 실행되는 프로그램의 명령어와 데이터를 저장한다. 이때 저장된 명령어와 데이터에는 모두 주소가 붙어있음

CPU → 산술논리 연산장치(ALU), 레지스터, 제어장치 세 개로 구성되어 있다.

  1. 레지스터 – CPU내의 임시저장 장치임. 역할마다 다른 이름을 갖는다.
  2. 제어장치 – 메모리 읽기, 메모리 쓰기 등의 전기신호를 내보내고 메모리를 해석하는 역할도 한다.
  3. ALU – 계산 노예...

시스템 버스 → 주소버스(주소 주고받음), 데이터 버스(데이터 주고받음), 제어버스(제어신호 주고받음)

💡CPU가 버스를 통해 명령어나 데이터를 읽으려 할 때는 주소버스를 통해 대상 주소와 제어버스를 통해 메모리를 어떻게 할건지 두가지 시그널을 보낸다.

💡저장할 때는 데이터버스를 통해 저장할 데이터 주고 받음.

💡컴퓨터는 x의 2의 보수를 –x로 이해한다. 왜? 우리가 일반적으로 사용하는 -(마이너스)기호컴퓨터 상에서 구현하기 어렵기 때문임

10101은 +0101

00101은 –1011

💡2의 보수를 구하는 방법은 간단함. 이진수 x의 모든 수를 반전시키고, 1을 더해주면 됨

💡이렇게 구한 x의 2의 보수는 실제 음수가 갖는 여러 성질을 비슷하게 가짐. 두 번 음수를 취하면 원래 수가 나오는 것부터, x와 x의 2의 보수를 더하면 한자리수가 반올림 돼서 1000...꼴로 값이 나오는데, 여기서 1만 절삭해주면 0의 값이 나오는 것도 같음.

여기서 생기는 문제는 -1011을 표현하는 음수 0101과 십진수 5를 표현하는 0101을 어떻게 구별할 것인지임. 이는 레지스터에서 플래그를 이용해서 구분함 그래서 C등에서 sign과 unsign을 구별하는 것임.

💡참고로 이런 2의 보수법으로는 –2^n과 2^n은 표현 불가임


명령어를 실행하는 프로그래밍 언어

명령어를 실행하는 프로그래밍 언어에는 다음 두 가지가 있다.

high-level이 low-levle로 변환되는 데에는 두가지 방식이 사용된다.