l 버스 : 연결된 장치 간 이동 통로
l 시스템 버스 : 케이블과 커넥터로 구성된 전송통로. 데이터와 제어신호들이 흐름
제어 버스 : 제어, 타이밍, 조정 신호 전달
데이터 버스 : 프로세서, 메모리, 주변장치 간 실제 데이터 전달
주소 버스 : 전송되는 데이터의 메모리 위치 지정
l 버스는 클록의 제공 여부에 따라 동기식 버스 / 비동기식 버스로 구분
l 입∙출력장치는 사용자와 컴퓨터 간의 대화 통로 제공하는 장치
1절 시스템 버스
1. 개요
n 시스템 버스 : 공유 전송 매체
기억장치, 중앙처리장치, 입∙출력장치 간에 통신할 수 있도록 해주는 상호 연결 구조
n 전기적 연결, 하드웨어, 프로토콜, 소프트웨어, 버스 컨트롤러 모두 포함
n 저속 입∙출력장치가 연결되면 비용 많이 발생
n 오십 개 ~ 수백 개 개별 라인으로 구성, 전원 분배 라인 있을 수 있음
n 버스 트랜잭션
u 요청 : 주소와 명령어 발행
u 행동 : 데이터 전송
u 마스터 : 명령이나 주소를 발생시켜 버스의 트랜잭션 시작할 수 있는 버스 요청 신호 생성 가능
u 슬레이브 : 버스에 대한 요청 권한이 없어 수동적으로 대응하는 장치
n 버스 분류 / 차별화 설계 요소
u 버스 유형, 전용 버스 라인, 주소 유효 제어선을 사용해서 같은 회선에 주소와 데이터 정보 전달하는 멀티 플렉스 버스 고려할 수 있음
2. 데이터 버스
n 시스템 모듈 간 데이터를 전송하는 양방향 통로 제공
n 32개 이상 수백 개의 선들로 구성
n 선의 개수 = 데이터 버스 폭! (전체 시스템 성능 결정)
o 전송 용량(대역폭)
o 버스 사이클 완료하는 데 몇 개의 사이클이 필요할 수 있음
o 속도 : 버스 처리량! 바이트/초 로 표시
o 버스 폭이 넓을수록 처리량 커짐
n 버스 처리 지연 : 데이터 전송을 준비하기 위해 필요한 시간
o 영구적인 버스 마스터가 있는 시스템에서는 처리 지연이 매우 작음
o 데이터 전송을 요구하는 장치들이 버스 접근을 승인하는 중재 매커니즘이 필요한 복잡한 시스템에서는 지연시간 길어짐
3. 주소 버스
1) 개요
u 단방향으로 주소 지정만 함. 데이터 버스에 실어야 할 주소 지정
u 버스 폭 : 시스템의 최대 메모리 용량(주소공간)을 결정함
u 입∙출력 포트 지정할 때도 사용
u 상위 비트는 버스의 특정 모듈 선택 / 하위 비트는 모듈 내 메모리 주소 또는 입∙출력포트 선택
u 데이터 전송 통제하는 버스 마스터는 데이터에 대한 주소를 제공해야 함
u 데이터 버스와 병렬로 작용하는 주소 버스 제공
일부 시스템은 주소/데이터 통합 버스 제공(멀티플렉스로) -> 시분할
o 멀티 플렉스 주소/ 버스
같은 선으로 주소와 버스를 멀티플렉싱 함
전송 경로상 고속 전자 스위치인 멀티플렉서와 디멀티플렉서 필요
기존 버스보다 속도 느리고 수정 어려움
2) 버스트 전송
u 각가의 데이터를 연속적으로 기억장치 주소로 전달
u 멀티플렉스 주소버스 방식의 효율성이 향상될 수 있음
u 캐시 메모리 시스템 지원하기 위해 사용됨
캐시 한 라인이 메모리에서 로드 될 때 첫 번째 워드 주소가 메모리로 전송
메모리는 지정된 주소의 데이터를 제공하고 계속해서 다음 주소의 워드를 제공함
u 각 데이터를 전송하는데 필요한 단계를 거치지 않고 반복하여 처리 -> 효율성 증가
연속적인 주소를 메모리에 생성할 수 있음
u 데이터 추가 주소 없이 송신!
4. 제어 버스
1) 개요
u 단방향으로 동작
u 데이터선과 주소선의 사용과 접근 제어
u CPU와 기억장치 간 명령과 시간 정보 전달
u 시간 신호 : 데이터와 주소 정보의 유효성 나타냄
u 명령 신호 : 실행할 연산 지정
u 데이터 방향 신호
u 데이터 유효성 신호(DAV) : 1이면 읽기 실행, 0이면 쓰기 실행
읽기 사이클 동안 데이터는 버스 슬레이브에서 버스 마스터로 흐름
쓰기 사이클 동안 데이터는 버스 마스터에서 버스 슬레이브로 흐름
u 일부 시스템은 읽기와 쓰기 신호 통합하여 갖지 않고 별도로 분리해 가짐
READ, WRITE 신호 유지하면 읽기 활성화 쓰기 활성화 버스 프리 3가지 상태 표현 가능
u DAV(유효성 신호)는 버스 마스터에 의해 신호 발생되어 전송 일어나고 있음을 나타냄
2) 제어신호의 종류
(1) 쓰기 신호 : 데이터 버스 내용이 주소에 저장
(2) 읽기 신호 : 주소의 내용이 데이터 버스에 실림
(3) 입∙출력 쓰기 신호 : 지정된 입∙출력 포트로 버스에 실린 데이터 출력
(4) 입∙출력 읽기 신호 : 지정된 입∙출력 포트로부터 데이터가 버스에 실림
(5) 클록 신호 : 동작 동기화
(6) 리셋 신호 : 모든 모듈 초기화
(7) 전송 ACK 신호 : 데이터가 버스에 실렸거나 버스로부터 다른 곳으로 전달되었음을 나타냄
(8) 버스 요청 신호 : 모듈이 버스의 사용권 얻는데 필요한 신호
(9) 버스 승인 신호 : 모듈의 요청이 버스 사용권 승인 받았음을 나타내는 신호
(10) 인터럽트 요청 신호 : 외부에서 인터럽트 발생했음을 알림
(11) 인터럽트 ACK 신호 : 요청한 인터럽트 승인
5. 시스템 버스 동작
1) 동기식 버스
u 클록이 필요한 버스
u 버스 상에 있는 모든 장치가 동일한 클록 속도에 맞춰 동작
u 클록의 주기보다 짧은 주기의 버스 동작은 클록이 완료될 때 까지 대기 -> 시간낭비
u 제어선은 규칙적인 동일한 주기로 1, 0 번갈아 전달하는 클록선 포함함
클록이 1 -> 0으로 변화하는 것 : 클록 사이클 / 버스 사이클 -> 클록 슬롯
클록 사이클이 시작되면 모든 이벤트 동작
이벤트는 하나의 클록 사이클을 점유
2) 비동기식 버스
u 클록을 사용하지 않고 마스터-슬레이브 방식으로 동작
u 버스 트랜잭션 실행 위해 핸드셰이킹 사용
u 핸드셰이킹 : MSYN, SSYN 두 가지 신호 사용
u 회로 복잡해짐
동기식 버스 |
비동기식 버스 |
클록으로 동작 – 기반의 프로토콜과 시간 기반의 제어선 |
클록 없음 |
클록 왜곡 때문에 길게 구성 X |
클롤 왜곡 걱정X 길이 제한 없음 |
버스상 모든 장치는 동일 클록 속도 적용 |
핸드셰이킹 프로토콜 사용 |
구형 쉽고 로직 간단 |
버스 트랜잭션 관리하기 위해 별도의 제어선과 로직 필요 |
속도 빠름 |
속도 빠르지 않음 |
클록 왜곡 : 클록의 시간적 지연에 의한 문제
6. 시스템 버스의 데이터 전송
1) 프로그램에 의한 입∙출력방식
u CPU가 직접 입∙출력에 대해 제어
u 상태 레지스터 검사할 별도의 프로그램 필요
u 플래그 검사한 결과에 따라서 읽기 or 쓰기 명령에 의해 데이터 전송
u CPU 경유해서 데이터 전송 -> CPU시간 낭비하게 됨
2) 인터럽트에 의한 입∙출력방식
u CPU가 상태 레지스터 검사 X
u 데이터 전송 준비 되면 인터페이스가 인터럽트 이용해 데이터 전송
u 인터럽트 요청하면 현재 실행 중인 프로그램 중단 -> 입∙출력 전송 시작
u 인터럽트 발생하면 복귀 주소 스택에 저장하고 서비스할 루틴으로 분기
u 분기 주소 : 벡터 인터럽트 방식 / 비벡터 인터럽트 방식
3) DMA에 의한 입∙출력방식
u 입∙출력장치와 기억장치가 직접 데이터 전송
u DMA라는 하드웨어를 버스에 설치
u 입∙출력하는 동안 CPU로부터 DMA가 모든 권한 위임 받는 방식
u DMA가 CPU 개입 없이 기억장치와 직접 데이터 전송
2절 버스 중재
l 프로세서와 DMA 컨트롤러 또는 두 개의 DMA 컨트롤러가 주 메모리에 액세스 하려고 동시에 버스 요청할 경우 충돌 발행 -> 중재 절차 필요
l 버스 마스터 : 주어진 시간에 버스에서 데이터 전송 초기화 할 수 있는 장치
l 다음 장치가 버스 마스터로부터 버스에 대한 액세스 얻도록 우선순위 시스템 설정해 다양한 장치의 요구하는 과정
1. 중앙집중식 중재 방식 : 하나의 버스 중재기가 중재
1) 데이지 체인 방식
u BG신호! 데이지 체인 방식! 모든 DMA 컨트롤러에 연결됨
u BB(버스 비지!) 신호 1 이면 DMA 컨트롤러 제어권 획득 / 0이면 버스 사용 중
u 동일한 버스 요청선, 버스 승인선, 버스 사용선 사용
u 하나의 중재선에 직렬로 연결, 중재기에 가장 가까운 장치의 우선순위 높게 할당
u 직렬 중재 방식
(1) 모든 마스터는 동일한 버스 요청BR선 사용
(2) 버스 중재기 -> 사용 가능할 경우 버스 승인 BG 신호를 해당 마스터에 보냄
(3) 버스 사용 중이면 BB 0, 버스 사용 끝나면 BB 1
2) 폴링 방식
u 중재기가 마스터에게 버스 사용여부를 주기적으로 체크하는 방식
u 중재기와 마스터 간 별도의 폴링 주소선이 있음
주소선 개수 ∝ 시스템에 연결된 마스터 개수
주소선 n이면 마스터 수는
u BR 신호 들어오면 중재기가 마스터 주소 순차적으로 생성해서 하나씩 버스 사용할 지 체크
u 한다 하면 BB 0 하고 BG 주고 뭐 그런거
u 속도가 좀 느리고 하드웨어 구성 방식과 소프트웨어 구성 방식이 있음
3) 독립 방식
u 중재기와 마스터 간에 별도의 독립된 버스 요청선 버스 승인선 있음
u BB선 : 중재기와 모든 마스터 간에 공통으로 사용
u 중재기 안에 디코더가 가장 높은 순위 선택-> 버스 승인 신호 발생 -> 사용 가능
4) 직렬 중재 방식과 병렬 중재 방식
u 직렬 : BG BR선 한 개
마스터 순서에 의해 우선순위 결정
u 병렬 : 버스에 연결된 마스터들이 모두 독립적인 BR, BG선 가짐
마스터 개수만큼 BR BG선 필요
2. 분산형 중재 방식
n 버스 마스터가 별도의 중재기 가지고 있는 방식
n 보스 중재 동작은 각 버스 마스터의 버스 중재기에 의해 이루어짐
n 신뢰성 우수
n 장애 일으킨 중재기 찾는 방법이 복잡, 중재기 한 개의 장애가 시스템에 문제가 됨
3절 입∙출력장치의 제어
1. 개요
n 서로의 특성 파악해 장애 없는 데이터 전송 수행해야 함
n 입∙출력 장비와 기타 주변 장치 간 데이터나 신호 전송 제어하고 적절한 동작 실행할 인터페이스 필요
2. 입∙출력장치의 구성요소
1) 입∙출력장치
2) 입∙출력 제어장치
u 입∙출력장치와 입∙출력 인터페이스 사이의 상호작용 제어
3) 입∙출력장치 인터페이스
u CPU와 입∙출력장치 간 정보 전송 담장
u 신호 변환, 동기 절차 및 제어, 데이터의 형식 변환 등
4) 입∙출력 제어기
u 마더 보드 내에 설치
u CPU 기능 갖는 입∙출력 전용 처리기
u DMA 제어기, 입∙출력 프로세서(IOP), 채널 제어기
3. 입∙출력장치 인터페이스의 목적
n CPU와 주변장치 간 차이점 해결 -> 링크
1) 신호 값 변경
2) 속도 차이에 의한 동기과 과정 필요
3) 주변장치의 데이터 코드는 CPU나 기억장치의 워드가 아님
4) CPU에 연결된 다른 주변장치들 동작에 방해되지 않도록 제어
4절 입∙출력장치의 주소지정
l 어떤 장비와 통신을 하기 위해선 프로세서가 주소선에 장비 주소 올려야 함
l 각 인터페이스는 입∙출력 버스에서 받은 주소와 제어를 해독 -> 주변장치의 제어장치로 신호 보냄
l 각 주변장치는 자기만의 제어장치를 가지고 있어!!
1. 입∙출력 명령
1) 제어 명령
2) 상태 명령 : 여러 상태 조건 테스트에 사용. 장애 테스트 -> 결과 상태 레지스터에 표시
3) 출력 명령 : 데이터 출력에 관한 명령
4) 입력 명령 : 데이터의 입력에 관한 명령. 출력 명령과 반대
2. 입∙출력 버스와 기억장치 버스
n 입∙출력장치와 통신하기 위해선 CPU는 기억장치하고도 통신해야 함
n 컴퓨터 버스가 기억장치, CPU와 통신하는 방법!
(1) 전용 프로세서(IOP) 사용
o 입∙출력 위한 전용 버스 구성하는 방법
o 컴퓨터가 별도의 입∙출력 프로세서IOP를 제공
o IOP의 목적 : 외부 장치와 내부 기억장치 간 정보 전송을 위한 독립된 경로 제공
o DMA와 차이점 : 저장된 입∙출력 프로그램을 실행할 수 있는 기능이 있음
o 입∙출력 프로그램 실행은 CPU명령에 의해 시작-> IOP번호, 입∙출력장치 번호, 입∙출력 프로그램 주소 등을 명령이 포함
(2) 분리형 입∙출력 방법
o 데이터와 주소버스는 공통으로 사용.
o 읽기 쓰기 위한 제어버스만 분리
o 데이터 주소는 주소선에 배치, 읽기쓰기 제어는 분리된 제어선에 설정
o 기억장치와 입∙출력장치 주소 공간 분리해서 사용. -> 입∙출력 주소 : 포트
o 기억장치와 입∙출력장치들이 별도의 명령어 사용
(3) 기억 사상 입∙출력 방법
o 기억장치나 입∙출력장치 위해 동일한 명령어 사용
o 기억장치 주소 용량 감소…
분리형 입∙출력 방식 |
기억장치 사상 입∙출력 방식 |
기억장치와 입∙출력장치가 서로 다른 주소 공간 가짐 |
동일한 주소 공간 사용 |
모드 주소는 기억장치에 의해 사용됨 |
입∙출력 주소 공간 때문에 기억장치 공간 감소 |
서로 다른 명령어 사용 |
동일한 명령어 사용 |
입∙출력 주소 : 포트 |
일반적인 기억장치 주소와 같음 |
별도 버스 사용 -> 효율적 |
효율성 떨어짐 |
버스 많아서 크기 커짐 |
크기 작음 |
별도의 로직 떄문에 복잡 |
로직 간단 |
5절 입∙출력 방식의 종류
1. 인터럽트 이용하지 않는 방식
n 드라이버 소프트웨어 제어하에 CPU의 레지스터 또는 메모리에 액세스 하기 위해 시작하는 데이터 전송
n CPU는 명령어 실행한 후 입∙출력작업이 완료될 때 까지 대기
n CPU가 데이터 수신 또는 전송 위해 준비된 입∙출력장치에 대해 오랜 시간 대기
è DMA, 인터럽트 방식 선택
n 폴링 : CPU가 대기하는 동안 입∙출력 모듈을 계속 확인
n 성능 수준 저하
n 동작 순서
(1) 장치에 의한 동작
o 데이터를 입∙출력 버스에 배치, 데이터 유효 라인 활성화
(2) 인터페이스에 의한 동작
o 바이트를 레지스터에 받아들이고 데이터 허용선 활성화 -> 상태비트 F!
o 데이터 허용선이 인터페이스에 의해 비활성화될 때까지 다른 바이트 전송 안함 -> 핸드셰이크
o 플래그 클리어 되먼 인터페이스는 데이터 허용선 비활성화 -> 다음 데이터 바이트 전송 가능
(3) 프로그램에 의한 동작
o 상태 레지스터 읽음
1이면 데이터 레지스터 읽고 0이면 상태 레지스터를 읽음;;
o 데이터 레지스터 읽으면 플래그 비트가 0으로 클리어 됨
2. 인터럽트 이용하는 방식
n 인터페이스 장치가 데이터 전송 준비가 되면 인터럽트 요청 생성해 CPU로 보냄
n CPU는 인터럽트 요청 신호 받으면 실행 중 프로그램 중단, 서비스 프로그램으로 분기
n 완료 후 다시 수행한 작업으로 복귀
n 폴링 / 데이지 체인
1) 인터럽트 이용한 동작 과정
(1) 동작 절차
o CPU 인터럽트 신호 인지 -> PC주소 스택에 저장, 해당 인터럽트 루틴ISR로 분기
o 입∙출력 데이터 전송 처리
o 스택에 저장된 주소를 PC로 전달 -> 원래 주소로 복귀 -> 다시 실행
(2) 분기 주소 선택 방법
① 벡터 인터럽트 방식
CPU가 인터럽트 서비스 루틴의 주소를 미리 알고 있음
소프트웨어적 처리 방식
인터럽트 필요한 장비가 장비의 벡터값을 데이터 버스와 입∙출력 인터페이스 통해 CPU로 보냄
② 비벡터 인터럽트 방식
PC에 저장된 주소가 지정하는 하드웨어로 분기
항상 일정한 위치로 분기 (장치 독립적인 하드웨어로 코드화 된 ISR로 분기)
(3) 인터럽트 종류
① 외부 인터럽트 : 정전, 전원 공급 등 하드웨어적 장애
정전! 가장 먼저 처리해야 함
② 내부 인터럽트 : 프로그램 자체의 오류에 의해 발생
불법적 명령이나 데이터 사용이 문제. 매번 같은 위치에서 발생
③ 소프트웨어 인터럽트 : 프로그램 운영자에 의해 강제로 실행 “감시자 호출”
(4) 인터럽트 우선순위
① 정전 / 전원 이상 인터럽트
② 출력장치 인터럽트
③ 내부 인터럽트
④ 소프트웨어 인터럽트
2) 폴링 방식
u 소프트웨어적 방식
u CPU가 입∙출력장치 지속적으로 확인
u 인터럽트 발생하면 우선순위에 따라 각 장치를 순차적으로 검사하여 해당 서비스루틴 실행
u 해당 작업 종료 전까지 아무 일도 못함
3) 직렬 우선순위 인터럽트 방식
u 하드웨어 우선순위 방식 사용
u 장비 동작 속도 빠르게 하기 위해 각 장비는 인터럽트 벡터가 있음
u 하드웨어 우선순위 인터럽트 장치에 의해 순서 결정
u 직렬, 병렬 다 가능
u 데이지 체인 방식은 인터럽트 회선을 직렬로 연결해 우선순위 결정-> CPU에 전달
우선순위 높은 장치를 먼저 배열함
u 첫 장비의 PI 통해 INTACK 신호 보냄 -> 인터럽트 요청 장치면 VAD 신호 보냄
u PO 신호 0으로 해서 신호 닫음
u 아니면 PO 거쳐 다음 장치로 넘어가고 PO는 1
u 즉 PI = 1, PO = 0 인 장치가 인터럽트 요청한 것
4) 병렬 우선순위 인터럽트 방식
u 인터럽트 레지스터 사용 -> 레지스터 비트 위치에 따라 우선순위 결정
u 마스크 레지스터 : 우선순위 낮은 장치 사용하지 않도록 설정하는 데 사용
u 해당 인터럽트 비트와 마스크 비트가 AND연산 되어 우선순위 인코더에 적용
u 우선순위 인코더는 2비트 벡터주소 생성
u 다른 출력은 인터럽트 상태 플립플롭 설정함
3. DMA를 이용한 입∙출력 방식
1) 개요
u 입∙출력장치와 기억장치가 직접 데이터 전송하도록 해 전송속도 개선, CPU 효율적 사용
u 기억장치와 입∙출력장치가 직접 전송 실행
u DMA가 데이터 전송하는 동안 CPU는 기억장치의 제어로부터 자유롭게 됨
u 버스 요청BR, 버스 승인BG 신호로 제어
u 실행 끝내고 주소버스, 데이터버스, 제어버스를 고전압 상태로 설정 -> 출력 중단 되었다는 의미
2) DMA 전송
(1) 대량 전송 : 한 블록씩 연속적으로 적용
DMA 제어기는 메모리 버스의 마스터가 됨
(2) 사이클 스틸링 : 한 번에 한 워드씩만 데이터 전송하고 버스 제어를 CPU에게 반환
3) DMA 제어기 구조
u CPU와 입∙출력장치 간 데이터 전송을 위한 인터페이스 회로, 주소 레지스터, 워드 카운트 레지스터, 제어 레지스터 등으로 구성
u 주소 레지스터의 기억장치의 주소를 이용하여 기억장치와 직접 통신
u 워드 카운트 레지스터는 전송할 워드 개수 표시 -> 전송되고 나면 1씩 감소
u 제어 레지스터 : 전송 방식 표시
u 주소 레지스터는 워드 전송하면 1씩 증가
u 데이터 버스와 제어선을 통해 CPU와 통신
u DMA 내의 레지스터는 DS(DMA SELECT) 와 RS(REGISTER SELECT) 입력을 1로 설정하여 선택
u RD, WR 입력은 양방향
u BG = 0이면 CPU는 DMA 레지스터에서 읽거나 쓰기 위해 DMA 레지스터와 통신
u BG = 1이면 DMA는 주소버스에 직접 주소를 지정해 메모리와 직접 통신. RD WR 제어 `활성화
u DMA 전송 실행
① CPU가 주소와 데이터 버스 통해 DMA와 통신 함
② DMA는 자신이 주소 가지고 있고, RS와 DS선 활성화
③ BG = 0 -> RD WR은 레지스터와 통신하는 입력선 (CPU)
BG = 1 -> RD WR은 기억장치에서 읽거나 쓰는 출력선 (메모리)
4) DMA 초기화 내용
u CPU가 입∙출력 명령으로 DMA 제어기 관련 레지스터 초기화함
① 입∙출력할 기억장치 블록의 시작 주소 담고 있는 주소 레지스터
② 기억장치 블록의 워드 개수 표시하는 카운트 레지스터
③ 읽기나 쓰기 전송모드 지정하는 제어 레지스터
④ DMA 전송 시작신호
초기화 함
4. 채널에 의한 입∙출력 방식
1) 개요
u IOP라고 불리는 채널!
u IOP는 스스로 명령어 인출하고 실행할 수 있음
u CPU는 데이터 처리, IOP는 주변장치와 기억장치 간 데이터 전송 경로 제공
u 데이터는 하나의 메모리 사이클을 이용해 IOP에서 기억장치로 전송 됨
u 명령(커맨드) : IOP가 기억장치에서 읽은 명령어(CPU에서 읽은 것과 구분)
2) 채널의 종류
(1) 셀렉트 채널 : 한 번에 하나의 입∙출력 동작 처리. 고속장치에 이용
(2) 멀티플렉서 채널 : 동시에 여러 입∙출력장치 시분할. 저속장치에 사용
한 번에 한 바이트
(3) 블록 멀티플렉서 채널 : 셀렉트 채널 + 멀티플렉서 채널 -> 블록단위로 전홍 다수 고속장치
속도 : 셀렉트 > 블록 > 멀티플렉서
'[시험] 독학사 2020 전공기초' 카테고리의 다른 글
독학사 자료구조 합격 후기 (0) | 2020.06.24 |
---|---|
독학사 C프로그래밍 합격 후기 (0) | 2020.06.24 |
[독학사][컴퓨터 시스템 구조] 08 보조기억장치 (0) | 2020.05.01 |
[독학사][컴퓨터 시스템 구조] 01 컴퓨터 시스템 개요 (0) | 2020.05.01 |
[독학사][C프로그래밍] 08 파일처리함수 (0) | 2020.04.28 |