본문 바로가기
전공수업/컴퓨터구조

컴퓨터의 기본 구조

by Alkaloid 2018. 3. 8.
반응형

#컴퓨터의 기본구조 


1. 컴퓨터시스템의 구성 3가지

  

 응용 소프트웨어

(application software)

시스템 소프트웨어

(system software)

하드웨어

(hardware) 


응용 소프트웨어 = 프로그램

시스템 소프트웨어 = 운영체제



2. 컴퓨터 하드웨어의 주요 요소


  ① 중앙처리장치 : 펜티얼 듀얼-코어프로세서, 쿼드-코어 옵테론등

  ② 기억장치

         ⓐ 주기억장치:RAM, ROM, DDR, SDRAM 등

         ⓑ 보조저장장치: 디스크, CD-ROM 등

  ③ 입출력장치

         ⓐ 입력장치 : 키보드, 마우스 등

         ⓑ 출력장치 : 모니터, 프린트, LCD, 스피커등

  ④ 전원공급장치, 냉각 송풍기 등



3. 컴퓨터의 기본 구조






#정보의 표현과 저장


① 컴퓨터는 크게 코드데이터 2가지로 나뉜다.


-코드란 명령어의 집합이며 데이터는 코드에서 선언한 변수를 뜻한다.

 변수는 상태를 저장하게되는데, 메모리(Process)가 될때 데이터를 생산하게 된다. 그 이유는 변수는 메모리에 저장(즉, 선언)되기 때문이다.


② 프로그램 코드는 크게 3가지로 나뉜다.

    - 기계어(machine language) : 기계 코드(machine code)라고도 한다.

    - 어셈블리 언어(assembly code) : 하드웨어가 이해할수 있는 2진 비트로 구성되어 있다. 어셈블러로 번역시 기계어와 일대일 대응 을 한다.

    - 고급 언어(high-level language) : C, C++등 사람이 이해하기 쉬운 언어이고, 컴파일러(compiler)를 이용하여 기계어로 번역한다


*  고급언어 → 어셈블리 언어 → 기계어

     (리버스 엔지니어링)   (컴파일)

* 일대일 대응을 하는 이유 ? c언어는 복합어로 되있기 때문에 일대일 대응을 해야한다.


# 프로그램 언어의 변환 과정


[예] Z = X + Y


- LOAD A, X : 기억장치(RAM) X번지(RAM의 주소)의 내용을 읽어서, 레지스터(Register) A에 적재(load || read)

- ADD A, Y : 기억장치 Y번지 내용을 읽어서 레지스터(Register) A에 적재된 값고 더하고, 결과를 다시 A에 적재

- STOR Z, A : 그 값을 기억장치 Z번지에 저장


*레지스터(Register) : 여러가지 레지스터가 있지만 여기서는 CPU안에 있는 메모리라 생각하자.


LOAD/ADD/STOR = 연산자(Operator)

A/ X /Y/ Z = 피연산자(Operand)


명령어란 ? 연산자 + 피연산자로 이뤄져있다.


컴파일러(compiler) : 고급언어 프로그램을 기계어 프로그램으로 변역하는 소프트웨어다.

어셈블러(assembler) : 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어

니모닉스(mnemonics)

- 어셈블리 명령어가 지정하는 연산을 가르키는 알파벳 기호

- 'LOAD' 'ADD' 'STOR' 등



# 기계 명령어의 형식


[예]

 001

(연산코드)

00101 

(오퍼랜드)

위에서는 3bit만 연산코드로 사용됬으므로 2^3 = 8개의 명령어가 실행된다.


① 연산코드 (op code)

   - cpu가 수행할 연산을 지정해 주는 비트들

   - 비트수=3 이라면, 지정될 수 있는 연산의 최대 수 : 2^3 =8개

② 오퍼랜드(operand)

   - 연산에서 사용될 데이터 혹은 그것이 지정되어 있는 기억장치 주소(memory address)

   - 비트 수 = 5라면, 주소지정(addressing) 할 수 있는 기억 장소의 최대 수 : 2^5 = 32개


1024Byte → 1KByte → 2^10

1024KByte → 1MByte → 2^20

1024MByte → 1Gbyte → 2^30

즉, 32라면 32는 2^32 되고 2*2*2^30된다. 더 쉽게 풀게되면 2^32는 2^30으로 잘라내고 나머지  2^2은 지수로 표현했기때문에 2*2가 나온것이다. 


1. 데이터의 기억장치 저장


   단어(word) 단위로 저장된다. 1word=4byte(32bit)

   단어 : 각 기억 장소에 저장되는 정보의 기본 단위로서, CPU에 의해 한번에 처리될 수 있는 비트들의 그룹이다.(레지스터크기와 비슷)

*메모리주소 저장값이 bits일때,4bit → 16Byte   / 메모리주소 저장값이 word일때, 4word → 64byte



# CPU와 기억장치의 접속


시스템 버스(System bus) : CPU와 시스템 내의 다른 요소들 사이에 정보를 교환하는 통로.

-주소 버스(address bus) : CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합이고,주소 선의 수는 CPU와 접속될수있는 최대                                기억장치 용량을 결정한다.

-데이터 버스(data bus) :  CPU가 기억장치 혹은 I/O장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합이고, 데이터 선의 수는 CPU가                           한번에 전송할 수 있는 비트수를 결정한다.

-제어 버스(control bus) : CUP가 시스템 내의 각종 요소들의 동작을 제어하기위한 신호 선들의 집합. 즉, 데이터나 주소가 잘 갔고, 잘받았는지 확인하는 작업


*메모리는 주소공간으로 이루어져있다.

메모리공간

 00000000

 00000001

 00000002

 00000003

 00000004

 00000005

 FFFFFFFE

 FFFFFFFF


공간과 주소

(주소는 8자리로 이루워져있고 하나가 4Byte이다. 4*8=32byte 총2^32개의 주소)


① 제어 버스(control bus)

         ⓐ 기억장치 읽기/쓰기 신호

         ⓑ I/O읽기/쓰기(I/O Read/Write)신호

         ⓒ 인터럽트(interrupt)신호 : CPU에게 신호를 주는것. (I/O장치 → CPU) CPU는 하던일을 멈춘다. ex)학생이 선생한테 질문

         ⓓ 버스 제어(bus control)신호


② 주소 버스(address bus)

         ⓐ 주소 버스의 비트 수 = 16bit라면, 최대 2^16=64k개의 기억 장소들의 주소지정 가능하다.


③ 데이터 버스(date bus)

         ⓐ 데이터 버스 폭 = 32bit라면, CPU와 기억장치 간의 데이터 전송은 한번에 32bit씩 가능하다.



# CPU와 시스템 버스 간의 접속


- 주소 버스 : 단방향성(unidirectional)

                  주소는 CPU로부터 기억장치 혹은 I/O장치들로 보내지는 정보

- 데이터 버스, 제어 버스 : 양방향성(bidirectional)

                                  읽기와 쓰기 동작을 모두 지원


*명령어가 주소를 자르기때문에 CPU는 명령어한테 주소를 요청한다. 기억장치(memory)는 단순히 주소를 CPU에게 보내주는 역활만 한다. 순서를 보면  명령어(주소 전달) → CPU(주소를 알려주고 값요청) → 기억장치(주소값을 전달) →CPU


*PC(Program Counter) : 코드부분의 주소를 알려준다.(추후에 배울예정)

반응형