시스템 버스
- 버스: 컴퓨터에서 두 개 혹은 그 이상의 장치들을 연결하는 공유 전송 매체
- 프로세서가 기억장치로부터 명령어와 데이터를 읽는 유형
- 프로세서가 기억장치에 데이터를 저장하는 유형
- 프로세스는 I/O 모듈을 통하여 I/O 장치로부터 데이터를 읽고, 프로세서가 I/O 장치로 데이터를 전송하는 유형
- I/O 모듈이 DMA(Direct Memory Access)를 통해 기억장치와 직접 데이터를 교환하는 전송 유형
- 시스템 버스: 프로세서, 기억장치 및 I/O 장치간의 통신을 위한 상호 연결에 이용
시스템 버스의 분류
주소 버스
- 데이터가 읽혀지거나 쓰여질 기억장소의 주소를 전송하는 통로
- CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합(단방향)
- 주소 버스의 비트 수는 최대 기억장치 용량을 결정
데이터 버스
- 모듈들 사이로 데이터를 전송하는 통로(양방향)
- CPU가 기억장치와 I/O 장치와의 사이에 데이터를 전송하는 신호 선들의 집합
제어 버스
- 제어신호들을 전송하는 통로
- CPU가 컴퓨터 내의 각종 장치들의 동작을 제어하기 위한 신호 선들의 집합(양방향)
- 기억장치 읽기/쓰기 신호
- 전송 확인, 인터럽트 확인
- 버스 승인
- I/O 읽기/쓰기 신호
- 버스 요구, 인터럽트 요구
- 리셋
시스템 버스의 방향성
- 데이터 버스는 읽기와 쓰기 동작을 모두 수행하므로 양방향성
- 제어 버스는 요구 제어신호와 확인 제어신호를 사용하므로 양방향성
- 주소 버스는 신호가 CPU로부터 기억장치 혹은 I/O 장치들로만 전송되지만 반대로의 전송은 존재하지 않기 때문에 단방향성
- 기억장치 쓰기 동작: CPU는 기억장치에 데이터를 전송해서 저장
- 기억장치 쓰기 시간: 기억장치 쓰기 동작에서 CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간
- 기억장치 읽기 동작: CPU가 기억장치에 저장된 데이터를 가져와 자신의 레지스터에 실음
- 기억장치 읽기 시간: 기억장치 읽기 동작에서 주소를 해독하는 데 걸리는 시간과 선택된 기억소자들로부터 데이터를 읽는 데 걸리는 시간을 합한 시간
CPU와 주변장치와의 데이터 전송
- CPU의 속도와 I/O 장치와의 처리속도의 차이가 커서 고속으로 전송된 데이터들은 느린 처리속도를 가진 입출력장치가 제대로 처리를 못함
- 시스템 버스와 입출력장치를 연결하는 입출력장치 제어기가 있음
- 입출력 장치 제어기: CPU로부터 입출력 명령을 받아서 해당 I/O 장치를 제어하고 데이터를 이동시키는 명령을 수행하는 전자회로 장치
- 상태 레지스터: I/O 장치의 현재 상태를 나타내는 비트들을 저장(준비 상태 비트, 데이터 전송확인 비트)
- 데이터 레지스터: CPU에서 I/O 장치 간에 이동되는 데이터를 일시적으로 저장하는 레지스터
컴퓨터의 기능과 동작
- 컴퓨터의 기본적인 특징: 신속성, 신뢰성, 정확성, 대용량성, 공유성
- 컴퓨터의 기본적인 기능: 입력 기능, 기억 기능, 처리 기능, 출력 기능, 통신 기능
프로그램 실행 시 구성 장치들이 수행하는 동작
구분 | 특징 |
실행 | CPU가 주기억장치에서 프로그램 코드를 읽어서 실행 |
데이터 저장 | 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장 |
데이터 이동 | 보조기억장치에 저장되어있는 프로그램과 데이터 블록을 주기억장치로 이동시키는 기능 |
데이터 입력 | 사용자가 키보드를 통해 보내는 명령이나 데이터를 읽어들임 |
데이터 출력 | CPU가 처리한 결과값이나 기억장치의 내용을 출력 |
제어 | 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생시킴 |
컴퓨터에서 프로그램의 역할
- 컴퓨터의 동작은 프로그램 내의 명령어를 읽고, 처리하고, 저장하는 과정을 통해서 정해진 순서대로 프로그램을 실행
- 프로그램 내의 명령어가 수행되는 과정: 명령어 인출 → 명령어 해독 → 명령어 실행 → 프로그램 카운터 증가 단계
명령어 사이클
- 중앙처리장치가 하나의 명령어를 실행하는데 필요한 전체 처리 과정
- 기본적으로 인출 사이클(fetch cycle)과 실행 사이클(execution cycle)의 부 사이클(sub-cycle) 2개로 구성
- 인출 사이클
- CPU가 주기억장치로부터 명령어를 읽어오는 단계
- 실행 사이클
- 명령어를 실행하는 단계
- 프로세서와 기억장치 간에 데이터가 전송됨
- 프로세서와 I/O 모듈 간에 데이터가 전송됨
- 데이터에 대하여 지정된 산술 혹은 논리 연산이 수행됨
- 제어동작: 실행 명령어의 순서가 변경될 때 사용됨
명령어 인출 사이클 과정
- t₀: 프로그램 카운터는 다음에 인출할 명령어의 주소를 가지고 있고 이것을 MAR에 저장
- t₁: 프로세서는 PC에 지정하는 기억장소로부터 명령어를 인출하고 PC 내용을 증가시킴
- t₂: 인출된 명령어가 IR로 적재, 프로세서는 명령어를 해석하고 요구된 동작 수행
- CPU는 실행 사이클 동안에 명령어 코드를 해독하고, 그 결과에 따라 필요한 연산들을 수행
컴퓨터 언어
어셈블리어
- 어셈블리 코드들의 집합으로, 고급 언어와 기계어 사이의 중간 언어
- 저급언어인 기계어와 일대일 대응 관계로 기계어로의 변환 과정이 쉬움
- 어셈블리: 어셈블리 프로그램을 2진수의 기계어로 번역하는 소프트웨어
- 니모닉스(mnemonics): 어셈블리 명령어가 지정하는 동작을 개략적으로 짐작할 수 있도록 하기 위해 사용되는 기호
- LOAD: 기억장치에 저장된 데이터나 명령어를 IR로 읽어오는 어셈블리 명령어
- ADD: 두 레지스터에 저장된 데이터를 산술적으로 덧셈을 수행하고 결과를 레지스터에 저장하라는 명령어
- STOR: 처리되거나 계산된 데이터를 기억장치로 저장하는 명령어
기계어
- 기계어는 두 개의 필드로 구분된 일정한 형식을 가짐
- 연산 코드 필드: CPU가 수행할 각종 연산을 지정해주는 비트
- 오퍼랜드 필드: 적재될 데이터가 저장되어있는 기억장치 주소 또는 연산에 바로 사용될 데이터 비트 값을 나타냄
- 8비트 기계 명령어 형식
- 연산 코드의 비트 수가 3이면, 지정할 수 있는 연산의 최대 수는 2³
- 오퍼랜드의 비트 수가 5이면, 지정할 수 있는 기억장소의 최대 수는 2⁵
- 기억장치에 저장되어 있는 단어 단위의 기계어
- 프로그램과 데이터가 기억장치에 저장되는 단위를 단어(word)라고 함
- CPU가 한 번에 처리할 수 있는 비트들의 그룹