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)   블록 멀티플렉서 채널 : 셀렉트 채널 + 멀티플렉서 채널 -> 블록단위로 전홍 다수 고속장치

속도 : 셀렉트 > 블록 > 멀티플렉서

 

 

+ Recent posts