찬란

시스템 버스, I/O 및 인터럽트 본문

컴퓨터 구조

시스템 버스, I/O 및 인터럽트

chan4 2023. 6. 11. 16:24

해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다. 

 

 

개요

  • 시스템 버스
  • 버스 중재
  • I/O 장치의 접속
  • 인터럽트를 이용한 I/O
  • DMA를 이용한 I/O

 

시스템 버스 (System bus)

  • 컴퓨터시스템의 구성 요소들을 상호 연결해주는 중심 통로
    • 구성요소
      • CPU
      • 기억장치
      • I/O장치
        • I/O장치들은 각각 버스에 연결할 제어기를 가지고 있음

시스템 버스의 조직

  • 버스(bus)
    • 구성 요소들간에 교환할 각종 정보들을 전송하는 선(line)들로 구성
  • 데이터 버스(data bus)
    • 양방향
  • 주소 버스(address bus)
    • 단방향
      • CPU >> 기억장치 및 I/O 제어기
  • 버스 대역폭(bus bandwidth)
    • 버스의 속도를 나타내는 척도
    • 버스 클록의 주기에 의해 결정
      • $ {데이터 버스의 폭} / {버스 클록 주기} $

제어 버스(control bus)

  • 기억장치 쓰기
  • 기억장치 읽기
  • I/O 쓰기
  • I/O 읽기
  • 주소 버스 = 16비트
    • 주소지정 가능한 최대 기억장소 수 = $ 2^{16}  = 65,536 (64K) $
    • 32-bit word 단위 주소지정일 경우,
      • $ 4byte \times 2^{16} = 256Kbyte $
  • 주소 비트 = 24비트
  • 중재 버스
  • 인터럽트 버스
  • 그 외의 제어신호들
    • 버스 클록 신호
      • 동기식 버스에서 버스 동작 동기화 
    • 리셋 신호

중재 버스(arbitration bus)

  • 버스 마스터(bus master)
    • 시스템 버스에 접속되는 요소들 중에서 버스 사용의 주체가 되는 요소
      • ex. CPU, 기억장치, I/O 제어기
  • 버스 중재(bus arbitration)
    • 복수의 버스 마스터가 버스를 이용하고자 할때 순서대로 하나씩 쓰게 해주는 동작
  • 중재 버스
    • 버스 중재를 위한 신호 선들의 집합
    • 버스 요구 신호 (BREQ, Bus REQuest)
    • 버스 승인 신호 (BGNT, Bus GraNT)
    • 버스 사용중 신호 (BBUSY, Bus BUSY)

인터럽트 버스(interrupt bus)

  • 인터럽트 메커니즘을 위한 제어 신호선들의 집합
    • 인터럽트 요구 신호
    • 인터럽트 확인 신호

시스템 버스의 기본 동작

  • 쓰기 동작 순서
    • 버스 마스터가 버스 사용권 획득
    • 버스를 통하여 주소와 데이터 및 쓰기 신호 전송
  • 읽기 동작 순서
    • 버스 마스터가 버스 사용권 획득
    • 주소와 읽기 신호 보내고, 데이터가 올 때까지 대기

동기식 버스와 비동기식 버스의 시간 흐름도

  • 동기식 버스(synchronous bus)
    • 공통의 버스 클록 기준으로 동작 
    • 장점
      • 인터페이스 회로 간단
    • 단점
      • 클록 주기보다 짧은 시간이 걸리는 버스 동작은 동작 시간 낭비
    • 일반적인 컴퓨터시스템 
  • 비동기식 버스(asynchronous bus)
    • 발생 시간이 관련된 다른 버스 동작의 발생 여부에 따라 동작 
    • 장점
      • 시간 낭비 없음
    • 단점
      • 연속적 동작을 처리하기 위한 회로 복잡
    • 소규모 컴퓨터

 

버스 중재 (Bus arbitration)

  • 버스 경합(bus contention)
    • 한 버스에 여러 마스터가 버스 사용 요구하는 현상
  • 버스 중재(bus arbitration)
    • 버스 경합 발생 시, 마스터들 스케줄링
  • 버스 중재기(bus arbiter)
    • 버스를 중재하는 하드웨어 모듈
  • 제어 신호들의 연결 구조에 따른 중재 방식 분류
    • 병렬 중재 방식
    • 직렬 중재 방식

병렬 중재 방식

  • 고정 우선순위 방식
  • 가변 우선순위 방식

고정 우선순위 방식(Fixed-priority scheme)

  • 중앙집중식
    • 모든 버스 마스터들이 하나의 버스 중재기에 접속
    • 가까운 순서대로 우선순위
  • 분산식
    • 모든 버스 마스터들이 중재기를 한 개씩 보유
    • 중재 동작
      • 각 중재기는 자신보다 높은 마스터의 요구 신호 받아 검사
      • 그들이 버스 사용 요구를 하지 않은 경우에만 자신의 마스터에 승인 신호 발생
    • 장점
      • 중재 회로 간단
      • 동작 회로 빠름
    • 단점
      • 고장 중재기 찾기 어려움
      • 하나의 고장이 전체 시스템에 영향 미칠 수 있음 

가변 우선순위 방식 (Dynamic-priority scheme)

  • 시스템의 상태에 따라 버스 마스터들의 우선순위를 계속 변화
  • 장점
    • 모든 마스터들이 공정하게 버스 사용 가능
  • 단점
    • 중재 회로 복잡

회전 우선순위 방식 (Rotating priority)

  • 중재 동작이 끝날 때마다 마스터의 우선순위가 하나씩 내려감
  • 가장 낮은 마스터는 최상위 우선순위가 됨 
  • Acceptance-dependent식 
    • 버스 사용 승인 받은 마스터는 최하위 우선순위가 됨
    • 바로 다음에 위치한 마스터가 최상위 우선순위를 가짐

동등 우선순위 방식

  • 모든 마스터들이 동등한 우선순위
  • FIFO 알고리즘

임의 우선순위 방식

  • 각 중재 동작이 끝날 때마다 우선순위 랜덤

최소-최근 사용(LRU, Least-Recently Used)

  • 최근 가장 오랫동안 버스 사용하지 않은 마스터에게 최상위 우선순위 할당
  • 회로 매우 복잡

 

직렬 중재 방식

 

중앙집중식

  • 하나의 버스 사용 승인 신호선(BGNT)데이지-체인(daisy-chain) 형태로 마스터들을 직렬 연결
    • 우선순위는 그 연결된 순서대로
  • 동작 원리
    • 하나 이상 버스 마스터 사용 요구 시 공통 BREQ 신호 세트
    • 데이지-체인의 첫 번째 접속 마스터로 승인 신호(BGNT) 전송
    • BGNT 신호 받은  마스터는 버스 사용권 가짐 (버스 사용 요구된 상태일 때만)
      • 요구X 라면, 승인 신호를 다음에 연결된 마스터로 통과
    • 승인 신호는 버스를 요구한 마스터에게 도달할 때까지 계속 통과
      • 버스 요구를 보낸 마스터들 중에서 중재기에 가장 가까이 위치한 마스터에게 승인 신호가 전달되면
        그 마스터가 버스 사용권을 획득 

분산식 직렬 중재 방식

  • DBGNT (Daisy-chained bus grant signal)
    • 데이지-신호 버스 승인 신호선
    • 버스 중재기들을 순환형(circular)으로 접속
  • 동작 원리
    • 버스 사용권을 부여 받은 마스터가 시작하는 순간, 
      • 마스터 중재기는 자신의 우측 위치한 마스터의 중재기로 접속된 DBGNT 신호 세트
    • 만약 마스터가 버스 사용을 신청하고 대기 중이었다면,
      • 중재기는 즉시 DBGNT 신호 받아들임
      • 그 후 BGNT 신호 발생시켜 마스터로 전송
    • 만약 마스터가 버스 요구 안했다면, 
      • 그 신호를 우측 마스터의 중재기로 통과
      • 이 과정은 버스 요구한 마스터에 도달할 때까지 반복
  • 특징
    • 각 마스터의 우선순위가 계속 변화
      • 버스 사용 승인 받으면 다음 중재 동작에서 최하위 우선순위
      • 버스 사용 마스터의 우측 마스터가 최상위 우선순위
    • 순환형 구조에서 DBGNT 신호가 연결된 순서대로 우선순위가 결정
  • 단점
    • 어느 한 지점 고장 시 전체 시스템 중단 

폴링 방식 (Polling scheme)

  • 폴링 방식의 원리
    • 중재기가 버스 사용 원하는 마스터가 있는지 주기적으로 검사하여 
      • 승인 여부 결정
  • 하드웨어 폴링
  • 소프트웨어 폴링

하드웨어 폴링 방식

  • 버스 중재기와 각 버스 마스터 간에 별도의 폴링 선(polling line) 존재
  • 2진 코드화된 폴링 주소를 이용하면, 폴링 선의 수가 $ log_{2}N $개로 감소
  • 공통의 BREQ 선과 BBUSY선이 각각 한 개씩 존재
  • 동작 순서
    • 중재기는 폴링 주소를 발생하여 검사할 마스터를 지정
    • 지정된 마스터가 버스 사용을 원하면 BREQ 신호를 세트
    • BREQ 신호 세트되면,
      • 중재기는 현재 검사 중 마스터에게 버스 사용 허가
    • 아니면,
      • 다음 마스터들에 대한 검사 순서대로 진행 
  • 우선순위 결정
    • 중재기가 마스터를 검사하는 순서에 의해 결정
    • 검사할 마스터의 번호는 2진 카운터를 이용하여 발생 

소프트웨어 폴링 방식

  • 폴링의 순서가 과정을 버스 중재기 내의 프로세서가 관장
  • 장점
    • 우선순위 변경이 용이
  • 단점
    • 속도 느림

 

 

I/O 장치의 접속

  • I/O 제어
    • I/O 장치가 시스템 버스에 직접 접속 못하는 이유
      • IO장치들을 종류에 따라 제어 방법 서로 다름
        • 제어 회로들 CPU 내부 포함시키는게 불가능
        • CPU가 이것들을 직접 제어 불가
      • IO 장치 데이터 전송 속도가 CPU에 비해 훨씬 느림
      • IO 장치와 CPU가 사용하는 데이터 형식의 길이가 서로 다를 수 있음
    • 인터페이스 장치인 I/O 제어기 사용 
  • I/O 제어기의 주요 기능
    • IO 장치의 제어와 타이밍 조정
    • CPU와의 통신
    • IO 장치와의 통신
    • 데이터 버퍼링 기능 수행
    • 오류 검출

상태/제어 레지스터 (Status/Control register)

  • 내부적으로 두 개의 레지스터로 구성되지만 주소는 하나만 지정
  • 상태 레지스터
    • I/O 장치의 상태오류 검사 결과 등을 나타내는 비트들로 구성
    • CPU의 읽기 동작 시 선택
  • 제어 레지스터
    • CPU가 보낸 I/O 명령 단어를 저장
    • CPU의 쓰기 동작 시 선택

Programmed I/O

  • CPU가 반복적으로 I/O 장치의 상태를 검사
  • 장점
    • 간단
    • 별도의 하드웨어 필요 X
  • 단점
    • CPU가 I/O 동작에 직접 관여해야 함
      • 그 동안 다른 일 못함 

I/O 주소지정 (addressing)

  • 각 I/O 장치 당 두 개씩의 주소 할당
    • 데이터 레지스터의 주소
    • 상태/제어 레지스터의 주소
  • I/O 주소 지정 방법
    • 기억장치 사상 (Memory-mapped)
    • 분리형  (Isolated)

기억장치 사상 I/O

  • 기억장치 주소 영역의 일부분을 I/O 제어기 내의 레지스터들의 주소로 할당하는 방식
  • LOAD, STORE 명령어 등을 I/O 장치 제어에도 사용 가능
  • 기억장치 읽기/쓰기 신호를 I/O 읽기/쓰기 신호로 사용
    • 별도의 I/O 제어 신호가 필요하지 않음 

  • 장점
    • 프로그래밍이 용이
    • 사용 가능 명령어들이 다양
  • 단점
    • 기억장치 주소 공간이 감소 (절반)

분리형 I/O

  • I/O 장치 주소공간을 기억장치 주소 공간과는 별도로 할당되는 방식 
  • I/O 제어를 위해서 별도의 I/O 명령어 사용
    • IN, OUT 명령어 
  • 별도 I/O 읽기/쓰기 신호 필요 

  • 장점
    • 기억장치 주소 공간이 줄어들지 않음
  • 단점
    • I/O제어를 위한 I/O 명령어들만 이용할 수 있으므로 프로그래밍이 불편

 

인터럽트를 이용한 I/O

  • 인터럽트-구동 I/O (interrupt-driven I/O)
    • 인터럽트 메커니즘 이용
    • I/O 동작이 진행되는 동안에 CPU가 다른 작업을 처리 
  • 다중 인터럽트 방식
  • 데이지-체인 방식
  • 소프트웨어 폴링 방식

다중 인터럽트 방식 (Multiple interrupt) 

  • 인터럽트 요구선 (INTR)
  • 인터럽트 확인선 (INTA)
  • 장점
    • CPU가 인터럽트를 요구한 장치를 쉽게 찾아낼 수 있음
  • 단점
    • 하드웨어 복잡
    • I/O 장치들 수 가 CPU 인터럽트 요구 입력 핀의 수에 의해 제한됨 

데이지-체인 방식(Daisy-chain)

  • CPU로부터 발생되는 INTA 출력 선을 I/O 제어기에 직렬로 접속하는 방식
  • 인터럽트 요구한 I/O 장치는 A In 입력을 받는 즉시 고유ID 번호(=인터럽트 벡터)를 CPU로 전송
    • 인터럽트 벡터는 해당 I/O장치를 위한 인터럽트 서비스 루틴의 시작 주소를 결정하는데 사용 
  • 장점
    • 하드웨어가 간단
  • 단점
    • Starvation 

소프트웨어 폴링 방식(Software polling)

  • TEST I/O 선 이용하여 인터럽트를 요구한 장치 검사
    • 검사 순서가 우선순위를 결정
  • 장점
    • 우선순위의 변경이 용이
  • 단점
    • 처리 시간이 오래 걸림 

 

직접 기억장치 엑세스 (DMA, Direct Memory Access)

  • CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터를 전송하는 방식
    • 사이클 스틸링(Cycle stealing)이라고도 불림
  • 방법
    • CPU가 주기억장치에 접근하지 않는 시간 동안,
      • 시스템 버스를 사용하여 주기억장치와 I/O 장치 간에 데이터 전송
  • DMA 처리 순서
    1. CPU가 DMA로 아래 명렁 전송
      • I/O장치 주소
      • 연산 지정자
      • 메모리 시작 주소
      • 전송될 데이터 word 수
    2. DMA는 CPU로 BREQ 전송
    3. CPU는 DMA로 BGNT 전송
    4. DMA 제어기가 주기억장치로부터 데이터 읽어서, 디스크 제어기로로 전송 
      • 각 데이터에 대해 2~4번 과정 두 번 반복
      • 시스템 버스 두 번 사용 
        • 해결책
          • I/O 장치들을 DMA 제어기에 접속
          • DMA 제어기가 주기억장치를 엑세스 할 때만 시스템 버스 사용 
    5. 저장할 데이터 남아있다면, 그 수만큼 2~4번 반복
    6. 모든 데이터 저장 완료되면, CPU로 INTR 전송 
  • DMA 문제점
    • I/O 장치는 종류/속도 다양, 간단한 DMA로는 한계있음
    • 내부 기억장치 필요
    • 해결책
      • I/O 프로세서 사용해야 함

IOP 

  • 구성
    • I/O 제어 프로그램을 수행할 수 있는 프로세서
    • 지역 기억장치
    • 시스템 버스 인터페이스
    • 버스 마스터 회로
    • I/O 버스 중재 회로

 

'컴퓨터 구조' 카테고리의 다른 글

어셈블리어 기초 (Basic of Assembly)  (1) 2023.06.11
고성능 컴퓨터시스템 구조  (0) 2023.06.11
보조저장장치  (0) 2023.06.11
기억장치  (0) 2023.06.11
명령어 (Instruction)  (0) 2023.04.23
Comments