제7장 버스와 입출력
7장에 나오는 이야기들 컴퓨터시스템의 버스와 클럭, I/O 방식의 발전 CPU가 무척 빨라도 버스의 병목현상이 성능에 발목 버스와 입출력 방식의 변화 추세 1980’s 초 IBM PC가 채택한 병렬포트, 직렬포트 ☞ 1990’s 후반 USB 방식 출현 이후 용도 사라짐 1980’s 지능적이지 못한 ISA 버스 시절 중재방식 ☞ 1990’s PCI 버스이후 지능적인 버스 마스터링 추세 2000’s PCI 익스프레스 등 고속 시리얼 버스 도입 한 신호선이 버스를 독점하기 때문에 I/O 버스 컨트롤러에서 버스를 중재할 필요 없이 고속전송이 가능
제7장의 구성 7.1 시스템버스 7.2 I/O 전송 7.3 I/O 버스 7.4 버스 사이클 7.5 버스 컨트롤러 7.6 인터럽트
7.1 시스템버스
7.1 시스템버스 시스템버스의 역할 시스템버스와 CPU 코어 클럭
시스템버스의 역할 시스템버스(system bus), 입출력버스, I/O 버스 혹은 메모리버스(memory bus), 전면버스(front side bus, FSB), 호스트버스(host bus) CPU의 내부와 외부를 연결하는 것이 주요 목적 CPU, 메인메모리, 칩셋 사이의 정보 교환 통로 <주로 CPU와 메인메모리 사이>의 메모리버스 메인메모리는 고속전송을 위해 주로 메모리 컨트롤러보다 시스템버스에 직접 동기 되도록 설계 입출력버스, I/O 버스 <I/O 컨트롤러와 입출력장치 사이>의 버스 시스템버스에서 갈라져 나와 다양한 입출력장치 연결
시스템버스와 I/O 버스 한 종류 시스템버스 ☞ 메인메모리는 대개 한 종류 여러 종류 I/O 버스 ☞ 입출력장치는 여러 종류 CPU, 메모리, I/O 장치 사이에는 이들을 제어하는 컨트롤러 칩들(주로 메인보드 상의 칩셋 형태)이 존재
시스템버스와 로컬버스 멀티프로세서 구조에서 로컬버스와 시스템버스 단일 CPU 구조에서도 로컬버스의 개념이 존재 로컬버스(local bus) 각 로컬 프로세서를 중심으로 연결되는 버스 시스템버스 각 프로세서 간의 중재 역할을 담당하는 공통 버스 주로 버스 컨트롤러와 공유 메모리 사이를 연결 단일 CPU 구조에서도 로컬버스의 개념이 존재 메인보드의 CPU가 가장 강력한 메인 프로세서 그 외 비디오 카드, 네트워크 카드, 키보드 등 각종 I/O 컨트롤러도 각자의 로컬 프로세서 및 로컬 프로세서 자신만이 사용하는 로컬버스 존재
시스템버스와 CPU 코어 클럭 클럭이 고속인 순서대로 성능향상 노력이 집중 CPU 코어 > CPU 언코어 > 시스템버스 > I/O 버스 CPU 자체의 성능 개선 노력 메모리와 I/O 버스의 전송속도 개선 노력 CPU 외부는 시스템버스의 개선 중심 시스템버스는 인쇄회로기판(PCB) 위의 전기신호로 CPU 같은 반도체 칩 내부보다 클럭을 높이기 어려움 I/O 버스는 고속인 비디오카드를 중점으로 고려 I/O 버스는 회로 배선들이 사방으로 흩어져 조금만 클럭을 높여도 전자파 장해나 간섭으로 오동작 발생
CPU 클럭 승수 CPU 승수(CPU multiplier) 혹은 CPU 클럭 승수, 버스/코어비(bus/core ratio) CPU 내부 코어가 CPU 외부 시스템버스 클럭의 몇 배수로 동작하는지를 표시, ×n 시스템버스 클럭은 CPU 코어와 시스템 전반에 연동 1990’s 초 486 이후 프로세서, DDR SDRAM 등에 채택 (ex.) CPU 코어 3333MHz, 언코어 2667MHz 클럭 승수 ×25일 때, 시스템버스의 물리적인 속도 ☞ 3333MHz÷25 ≒ 133MHz CPU 내부에서 코어를 제외한 부분인 언코어 클럭 2667MHz÷133MHz ≒20 ☞ 외부 클럭의 ×20배로 동작
멀티코어와 터보 부스트 인텔 터보 부스트(turbo boost) 기술 멀티코어 프로세서에서 일부 코어의 동작 클럭만 순간순간 동적으로 끌어 올려주는 기술 코어를 다 쓰지 않을 경우 운영체제가 CPU에 요청 발열이나 전기적인 한계에 도달하면 자동으로 내림 (ex.) 터보 스텝(turbo step)이 1/1/6/9인 프로세서 ☞ 4개의 코어 중 4/3/2/1개씩 사용할 때 정상 코어 클럭을 기준으로 외부 클럭의 최대 1/1/6/9배까지 올림 정상 동작 3333MHz, 외부 133⅓MHz면 코어 1개만 사용할 때 최대 3333MHz+9×133⅓MHz까지 동작 일정한 시간 간격으로 133⅓MHz씩 올리고 내림
Quiz ☞ 터보 부스트 클럭 계산 2/2/8/9 스텝, 정상 동작 2.0GHz, 외부 133⅓MHz 코어 4/3/2/1개 사용할 때 최대 클럭을 계산하라. 터보 스텝 기본 클럭 대기 상태
Quiz ☞ 정답 2/2/8/9 스텝, 정상 동작 2.0GHz, 외부 133⅓MHz Core 3~4개 사용 ☞ 최대 2000+2×133⅓ ≒ 2267MHz Core 2개 사용 ☞ 최대 2000+8×133⅓ ≒ 3067MHz Core 1개 사용 ☞ 최대 2000+9×133⅓ ≒ 3200 MHz 터보 스텝 기본 클럭 대기 상태
시스템버스와 오버클럭킹 오버클럭킹(overclocking) 시스템버스의 클럭을 임의로 올려 CPU 내부의 코어 클럭을 강제로 끌어 올리는 기법 요즘은 시스템 설정에서 이를 조정 CPU, 칩셋, 메모리, I/O 장치 속도가 따라주어야 신뢰성 있게 사용하려면 이 방법은 피해야 시스템버스에 비례해 CPU 동작 클럭과 I/O 버스 등 시스템 전반에 사용하는 모든 클럭 속도가 증가 발열 증가로 반도체 부품의 수명에도 영향 설계나 제조공정에서 고려된 품질의 마진까지 꺼내 강제로 클럭을 올려주는 방법
시스템버스와 오버클럭킹 <클럭 속도만 차이나는 프로세서들> 설계나 제조과정이 다른가? 대부분 그렇지 않다. 반도체는 같은 제조공정을 거쳐도 완성품을 테스트하면 동작가능한 최대 클럭이 각기 다른 물리적인 특성 어떤 CPU는 3GHz까지 무리 없고 어떤 CPU는 4GHz까지도 괜찮은 것 제조공정에서 발생하는 품질에 대한 설계 마진 동일한 반도체 공정으로 만들고 테스트해 높은 클럭으로 동작시켜도 되는 것을 골라 별도 모델로 판매 대개 클럭이 높을수록 수율이 낮아 고가 CPU 사양의 동작 클럭 표시는 어느 정도 마진이 포함 ☞ 오버클럭킹에 이용됨
가격과 성능, 두 마리 토끼 가격 대 성능비(price/performance ratio)로 판단 일명 가성비, 낮을수록 가격대비 성능이 우수 관습상 이 비율을 거꾸로 이야기 할 때가 많다. (계산) 가성비가 낮다 ☞ 성능에 비해 가격이 저렴하다. (관습) 가성비가 우수 ☞ 가격대비 성능이 우수하다. 컴퓨터의 성능에 가장 큰 영향을 주는 하드웨어 CPU > 캐시 > 메인메모리 > 비디오카드 > HDD 요즘은 캐시를 내장하므로 CPU 클럭이 가장 큰 영향 CPU 구조가 동일하면 코어 클럭에 성능이 대체로 비례 같은 종류의 CPU가 클럭 속도만 10% 차이인데 가격이 2배라면 그만한 가치가 있는지? ☞ 본인이 판단 10분 걸려 계산할 작업은 불과 1분 더 기다리는 일
7.2 I/O 전송
7.2 I/O 전송 I/O 주소 I/O 전송방식 폴링 방식 인터럽트 방식 DMA 방식
I/O 주소 메모리와 I/O 장치를 주소로 구분 어드레스 맵(address map) CPU가 하드웨어를 정확하게 제어하기 위함 메모리 주소 ☞ 주로 반도체 메모리에 할당 I/O 주소 ☞ 반도체 메모리를 제외한 나머지 대개 한 주소에 한 바이트를 할당 어드레스 맵(address map) 메모리 주소나 I/O 주소의 범위와 용도를 알기 쉽도록 지도와 같이 세밀한 그림이나 표로 정리한 자료 메모리 맵(memory map) I/O 맵(I/O map)
I/O 주소를 지정하는 방법 메모리 맵에 의한(memory-mapped) I/O I/O 맵에 의한(I/O mapped), 격리형(isolated) I/O 메모리와 I/O의 읽기와 쓰기 신호를 분리 메모리의 일부 주소를 I/O 장치에 할당 메모리와 I/O 주소를 분리
I/O 전송방식 I/O 전송방식 입출력장치를 효율적으로 관리하기 위한 방법 CPU는 하나지만 빠르고 I/O 장치는 종류는 많고 느림 I/O 전송방식을 효율적으로 설계하면 ☞ CPU가 입출력장치를 관리하는 시간을 절약
I/O 전송방식의 필요성 I/O 전송방식의 필요성 I/O 장치까지 CPU나 메모리 컨트롤러가 직접 제어하는 것은 비효율적 CPU와 I/O 장치 간 통신과 제어 타이밍을 조절해 CPU와 I/O 장치 간 속도 완충 I/O 전송방식이 필요한 이유 I/O의 데이터 속도는 시스템버스의 소자들보다 느림 전송 비트 수는 시스템버스의 소자들보다 대개 작음 종류와 제어 방법이 매우 다양하고 많음
I/O 전송방식 I/O 전송방식의 종류 ☞ 유치원 소풍날 점심에 비유 폴링 방식 인터럽트 방식 DMA 방식 선생님이 아이들 하나씩 모두 챙겨줌 아이들을 항상 주시해야 하므로 선생님에게 큰 부담 인터럽트 방식 아이들 요청이 있을 때만 도와줌 요청한 아이가 많으면 우선순위를 정함 요청이 없으면 선생님은 다른 일을 할 수 있음 DMA 방식 처음부터 다른 분에게 맡김 가장 부담이 적고 진보된 방법
폴링 방식 폴링 방식 CPU가 주기적으로 각 I/O 장치의 상태를 검사해 전송할 데이터가 있으면 이를 처리하는 방식 혹은 프로그램에 의한(programmed) I/O 전송방식 CPU가 주기적으로 각 I/O 장치의 상태를 검사해 전송할 데이터가 있으면 이를 처리하는 방식 특정 I/O 주소들을 순서대로 지정해 일정한 시간 간격으로 매번 액세스하도록 프로그래밍 폴링(polling) ☞ 특정 주소를 지정해 그 주소에서 데이터를 내놓도록 권유해 이를 가져오는 과정 구조가 간단하나 CPU 입장에서는 비능률적 언제 일어날지 모를 데이터 전송에 대비해 I/O 장치를 검사하는 반복 루프를 계속 돌려야 하므로 시간 낭비 (ex.) 100 장치, 10ms ☞ 100주소×100회=초당 10000번
비동기 장치 간 제어방식 폴링은 비동기 장치 간의 제어방식이 필요 비동기 상태 ☞ 각자 자신의 클럭 펄스를 갖고 동작하면서 두 장치의 클럭이 서로 다를 때 송수신 간에 전송될 시간을 알리려면 제어신호가 필요 폴링은 비동기 장치 간의 제어방식이 필요 핸드셰이킹(handshaking) 방식 비동기인 두 장치 간에 동기를 맞추기 위해 사전에 정해진 일련의 신호를 주고받는 방식 악수(handshake)를 주고받듯 교대로 정보를 교환 각 상대방에게 보낼 수 있는 2개 이상의 신호선 사용 스트로브 제어(strobe control) 방식 1개의 신호선으로 동기를 맞출 수 있도록 송신측에서 수신측으로 스트로브 펄스(pulse) 신호를 보냄
인터럽트 방식 인터럽트 방식 I/O 장치의 데이터 전송 요청이 들어올 때만 CPU가 이를 처리하는 방식 혹은 인터럽트에 의한(interrupt driven) I/O 전송방식 I/O 장치의 데이터 전송 요청이 들어올 때만 CPU가 이를 처리하는 방식 전송할 데이터가 있을 때 CPU에 인터럽트서비스 요청 CPU는 일을 멈추고 요청한 데이터의 전송에 관여 요청한 작업이 끝나면 CPU는 본래 하던 일로 복귀 인터럽트 방식에 의한 I/O 데이터 전송 사례 마우스나 키보드에 입력이 있을 때 프린터에 인쇄할 준비가 되어있을 때 모뎀에 송신 준비가 되거나 수신 데이터가 있을 때
데이터 전송 요청 비교 I/O 장치들의 데이터 전송 요청 비교 ☞ 마우스와 HDD를 예로 들어 I/O 전송방식 비교
CPU 점유율 CPU 점유율 I/O 전송방식이 컴퓨터시스템의 성능에 얼마나 부담을 주는지 처리 성능을 비교할 기준으로 필요
폴링 방식의 부담 폴링 방식의 부담 <표 7-1> ☞ 키보드나 마우스의 움직임은 아무리 빨라야 초당 10회 정도의 사건(event)을 발생 Assume the conditions! (다음 조건을 가정) CPU가 마우스 데이터를 10ms 간격으로 폴링 초당 10회 정도 움직이는 마우스를 초당 100번 감시 3.2GHz CPU 클럭 기준 1회의 폴링에 400클럭 소요 마우스 폴링 (CPU 점유율) = (1폴링/10ms)×(400클럭/폴링) ÷(3.2G클럭/s)×100% = 0.00125% (7.2) ☞ 충분히 수용 가능
폴링 방식의 부담 Assume the conditions! (다음 조건을 가정) 하드디스크 폴링 어떤 HDD가 160MB/s, 16B 인터페이스 사용 ☞ 초당 폴링 횟수 = 160MB÷16B 3.2GHz CPU 클럭 기준 1회의 폴링에 400클럭 소요 하드디스크 폴링 (CPU 점유율) = (160MB/s)÷(16B/폴링) ×(400클럭/폴링)÷(3.2G클럭/s)×100% = 125% (7.3) ☞ 도저히 감당할 수 없는 수치 왜 이런 결과가 나왔을까? 실제 HDD 사용빈도는 전체 사용시간 중 5% 정도 요청이 없어도 HDD 전송을 100% 감시하려면 무리
인터럽트 방식의 부담 Assume the conditions! (다음 조건을 가정) 어떤 HDD가 160MB/s, 16B 인터페이스 사용 ☞ 초당 인터럽트 횟수 = 160MB÷16B 3.2GHz CPU 클럭 기준 1회의 인터럽트 처리에 600클럭 소요 인터럽트 핸들러에 500클럭 + 데이터 전송에 100클럭 HDD 사용률을 5%로 가정 하드디스크 인터럽트 (데이터 전송 확률 5%) (CPU 점유율) = 0.05×(160MB/s)÷(16B/인터럽트) ×(600클럭/인터럽트)÷(3.2G클럭/s)×100% = 9.375% (7.4) 만일 HDD 사용률을 50% 가정 ☞ 93.75% 감당 못함
DMA 방식 DMA(direct memory access) 방식 <직접 메모리 액세스>의 영문약자 메모리와 I/O 장치 사이의 데이터 전송을 CPU 대신 별도의 DMA 컨트롤러가 담당하는 전송방식
DMA 방식 DMA 컨트롤러는 CPU와 독립적으로 데이터를 전송 DMA 컨트롤러가 CPU에게 버스 사용권을 요구하면 CPU가 이를 승인하도록 설계 DMA 채널 설정 이후 DMA 컨트롤러가 데이터를 전송하는 동안 CPU가 관여하지 않음 폴링과 인터럽트 방식 ☞ CPU가 데이터 전송에 직접 개입, 읽기와 쓰기 과정에 데이터가 반드시 CPU를 거쳐야 DMA 채널 설정 ☞ CPU가 DMA 컨트롤러에 데이터 전송을 의뢰할 때 다음 정보를 넘겨주어야 데이터가 출발할 메모리나 I/O 장치의 시작 주소 데이터가 도착할 메모리나 I/O 장치의 시작 주소 전송될 데이터 블록의 크기
DMA 동작 모드 DMA 동작 모드 CPU가 버스를 사용하지 않는 시간에 데이터를 전송 DMA 컨트롤러가 시스템버스, I/O 버스를 직접 액세스 DMA 동작 모드 사이클 스틸링 모드(cycle stealing mode) DMA CPU가 메모리 등의 시스템 자원을 사용하지 않는 대기 상태나 내부 동작 중일 때, 마치 CPU 버스 사이클을 훔치듯 그때그때 데이터를 전송하는 방식 버스트 모드(burst mode) DMA 데이터의 전송방향을 먼저 정하고 한 번에 많은 양의 데이터를 집중적으로 내보내는 방식 둑이 터지듯(burst) 다량의 데이터가 한꺼번에 전송
DMA 방식의 부담 Assume the conditions! (다음 조건을 가정) 어떤 HDD가 160MB/s, 16B 인터페이스 사용 1회의 DMA 전송에 16KB짜리 한 페이지 ☞ 초당 DMA 채널 설정 횟수 = 160MB/s÷16KB 3.2GHz CPU 클럭 기준 1회의 DMA 채널 설정에 1600클럭 소요 HDD 사용률을 50%로 가정 하드디스크 DMA (데이터 전송 확률 50%) (CPU 점유율) = 0.5×(160MB/s)÷(16KB/페이지) ×(1600클럭/페이지)÷(3.2G클럭/s)×100% = 0.25% (7.5) 만일 HDD 사용률을 100% 가정 ☞ 0.5% 미미한 수준 채널 설정만 해주면 된다
DMA의 한계 DMA의 한계 DMA 채널 설정을 정확하게 해주어야 CPU가 전송에 관여하지 않아 지능적이지 못함 DMA 전송 중에 정지시키면 메모리나 I/O 장치에 있는 데이터의 일관성에 문제 발생 DMA 채널을 사용하고 정확하게 리셋 시키지 않으면 다른 장치가 이를 사용할 때 심각한 충돌 발생 CPU가 전송에 관여하지 않아 지능적이지 못함 데이터 전송 사이즈를 다양하게 하거나, 가상주소나 다양한 계층의 캐시를 제대로 사용할 수 없음 이를 해결하는 모든 기술을 포함해 DMA 컨트롤러를 설계하는 일은 점점 복잡해짐
DMA의 한계 요즘 I/O 버스 방식들은 지능적 1990’s 도입된 PCI 이후 I/O 버스 방식들은 지능적 과거 ISA 버스에서 사용하던 중앙집중식 DMA 컨트롤러를 더 이상 사용하지 않음 요즘은 I/O 버스 컨트롤러가 마치 CPU와 독립적인 프로세서처럼 작동 메모리나 I/O 장치가 DMA 서비스를 요청하면 I/O 버스 컨트롤러가 이를 직접 관리
7.3 I/O 버스
7.3 I/O 버스 I/O 버스의 발전 시리얼 버스 인터페이스 I/O 버스의 연장 확장카드 I/O 버스의 충돌
I/O 버스의 발전 I/O 버스는 시스템버스에서 갈라져 나옴 인터페이스 방법과 속도가 다양한 주변장치들을 연결하므로 CPU와 주로 비동기로 동작 고속 시리얼 포트, PnP로 연결, 초기 IBM PC의 ISA 버스를 기반으로 한 저속 직렬 및 병렬 포트를 대체 주로 메인보드 상의 칩셋에 내장
I/O 버스의 발전 그래픽 어댑터는 I/O 장치 중 특히 고속을 목표 ☞ I/O 버스 전체가 아닌 그래픽 전용 채널을 분리 패럴렐버스 시리얼버스
I/O 버스의 발전 1990’s 초 IBM이 32비트 MCA 버스에 ISA 버스와 달리 특허료를 물리려 하자 호환기종 업자들이 반발 VESA 로컬방식 16비트 ISA 슬롯에 커넥터를 추가해 32비트로 개선 시스템버스에 I/O 버스가 동기 되어 부하 걸림 나중에 32비트 I/O 버스는 인텔의 PCI 방식이 주도 범용 I/O 버스 전체를 고속으로 설계하는 것은 한계 효과적인 방법은 그래픽 전용 채널을 분리하는 것 AGP(accelerated graphics port) PCI 버스 기반으로 구현된 일종의 그래픽 전용 포트 이후의 그래픽 전용 버스는 대개 고속 슬롯으로 분리해 독점적으로 I/O 버스를 사용하도록 설계
PCI 버스 PCI(peripheral component interconnect) 인텔이 설계한 지능적인 I/O 버스 주변장치를 자동으로 인식하는 PnP 기능이 가능 버스 자체가 일종의 버퍼 역할 PCI 버스에 연결된 장치들은 CPU와 비동기로 동작 CPU와 주변장치 사이의 데이터 전송에서 I/O 버스 컨트롤러가 마치 독립적인 프로세서처럼 동작 과거의 ISA 버스와도 호환 ISA 버스의 신호들과 IRQ 신호를 생성 병렬인 PCI 버스는 직렬인 PCI-E 버스에 대체됨
PCI 익스프레스 버스 PCI 익스프레스(PCI express, PCI-E, 2003 도입) 전송채널로 독립적인 선로(lane) 사용 각 채널이 간섭 없이 독립적인 전송속도를 확보, 선로당 송수신의 2개 단방향선으로 하나의 전송채널 구성 전송채널 개수를 늘려 간단히 전송속도 높임 ×1, ×16, ×32 배속 등으로 데이터 전송속도 표시 PCI-E 3.0 ×16 링크 ☞ 약 1GB/s×16배속≒16GB/s PCI-E 버스와 확장카드 개선 표준 ☞ <표 7-2> 참조 PCI-E 3.0, 4.0은 128b/130b 인코딩 방식 오버헤드를 제외한 약 98.5%가 실제 데이터 전송속도
패럴렐에서 시리얼 방식으로 시리얼 방식으로 바뀔 때의 장점 가장 큰 차이점은 구조가 간단해진 것 병렬버스에 적용 못했던 발전된 기술을 다양하게 적용 패럴렐에 비해 하드웨어 핀당 대역폭이 커 고속 전송 핀(pin) 수를 늘려 전송속도를 편리하게 몇 배로 증가 전원이 들어온 상태에서 장치를 장착하거나 교체하는 핫-플러그(hot-plug), 핫-스왑(hot-swap) 설계도 간단 parallel parallel serial
패럴렐에서 시리얼 방식으로 요즘 I/O 버스 방식의 주류는 PCI에서 PCI-E처럼 패럴렐에서 시리얼 방식으로 바뀐 점 패럴렐(parallel, 병렬) 버스 동시에 여러 장치에 버스가 연결되는 상태에 기반(multi-drop basis)을 둔 버스 구조 시리얼(serial, 직렬) 버스 각 장치 간에 일대일(1:1, point-to-point, peer-to-peer)로 직접 연결되는 네트워크로 구조가 단순 한 신호선이 버스를 독점하기 때문에 I/O 버스 컨트롤러에서 버스를 중재할 필요 없음 전송을 준비하는 지연시간을 크게 줄여 고속 전송
시리얼 버스 인터페이스 가전제품을 바로 접속할 수도 개선 버전은 I/O 컨트롤러, 주변장치, 케이블, 허브 같은 연결 장치가 모두 해당 표준을 지원해야 가능 낮은 버전용은 접속은 동일하나 전송속도는 보장 못함
USB 인터페이스 USB(universal serial bus, 1996) <범용 직렬 버스>의 영문약자 I/O 컨트롤러에 내장된 USB 호스트 장치가 모든 전송을 시작하고 하나의 목적지를 가짐 여러 대의 컴퓨터가 USB 연결 장치를 통해 프린터와 같은 주변장치들을 공유 과거 ISA 시절부터 내려온 저속의 I/O 버스 인터페이스들을 훌륭하게 대체 고속의 개선 버전들이 계속 나옴 USB 3.0은 USB 2.0 단자와 구분하기 위해 케이블의 끝 부분에 파란색 단자를 사용
IEEE 1394 인터페이스 IEEE 1394 (1995) 저속이나 고속의 주변장치를 연결하고 공유 여러 개의 목적지를 가짐 FireWire 800 ☞ 채널당 800Mbit/s 여러 개의 목적지를 가짐 동일한 버스에서 다른 속도의 장치를 동시 지원 컴퓨터와 연결 없이도 주변장치끼리 직접 통신 디지털 가전제품끼리의 인터페이스 지원 (ex.) 2대의 디지털 캠코더끼리 1:1 연결해 직접 더빙 물리적인 연결방식 때문에 시리얼 SCSI로 부르기도 기존 SCSI의 복잡한 설치문제(독립 ID 설정, 버스 종단) 를 해결하고, 간단하고 융통성 있는 케이블 시스템 덕분에 기존 병렬 SCSI 방식을 대체
썬더볼트 인터페이스 썬더볼트(Thunderbolt, 2011) <벼락>이라는 뜻으로 데이터, 음성, 영상 포함 SAS, SATA, eSATA, USB, IEEE 1394, DVI, HDMI 등 기존 모든 I/O 버스 인터페이스를 통합 대체할 목적 다른 방식의 최종목표처럼 컴퓨터 주변장치와 블루레이 등 모든 디지털기기의 인터페이스를 통합하는 것 내부적으로 PCI Express, DisplayPort 프로토콜 결합 부품 크기를 더 줄이고, 데이터를 더 빠르고 더 멀리 전송하며, 유연한 설계가 가능하도록 함 광케이블을 이용 최대 100Gbit/s까지 대폭 개선
데이지 체인의 유래 데이지 체인 데이지(daisy) 꽃의 수염뿌리가 사방으로 퍼져 꽃의 잎과 자루가 서로 연결된 형상
데이지 체인(daisy chain) 연결 한 장치에 연결된 다른 장치가 또 다른 장치에 연속해서 연결되는 버스 결선 방식 주변장치가 꼬리에 꼬리를 물고 연결 패럴렐과 시리얼 버스에 모두 적용 데이지 체인의 약점 연결 포트를 2개씩 내장하려면 가격 불리, 설계 복잡 핫-플러그 사용시 다른 장치 연결이 리셋 될 수도
데이지 체인과 허브 연결 허브 연결 USB 인터페이스 등도 데이지 체인 연결은 가능하지만 일반적으로는 데이지 체인을 잘 사용하지 않음 주로 허브(hub)를 사용해 연결 포트가 하나뿐인 주변장치들도 트리(tree) 구조로 편리하게 연결
I/O 버스의 연장 I/O 버스는 입출력 데이터가 지나가는 길 I/O 버스 컨트롤러는 교통 신호등의 역할
I/O 버스의 연장 I/O 버스의 연장 확장카드나 주변장치가 컴퓨터에 연결되려면 I/O 버스를 연장해 입출력 신호의 통로를 만들어야 I/O 버스 컨트롤러와 운영체제가 지원해 주어야 연장되는 방법에 따라 ☞ 본체 내부와 외부 I/O 장치 내부 I/O 장치 I/O 확장 슬롯에 연결되는 추가 확장카드 I/O 커넥터에 연결되는 내장 드라이브 등 외부 I/O 장치 유선이나 무선 I/O 포트에 연결되는 각종 주변장치들
I/O 확장 슬롯 I/O 확장 슬롯(expansion slot) 시스템보드 상에 위치하며 커넥터 형태 추가 확장카드를 설계할 수 있도록 I/O 주소버스, I/O 데이터버스, I/O 제어버스가 범용으로 연장 시스템보드 설계에 따라 슬롯의 종류와 개수 다름 과거에 설계된 느리고 자주 충돌하고 많은 면적을 차지하던 확장 슬롯들은 하나씩 제거됨
I/O 확장 슬롯 사례 PCI Express x16 slot PCI Express x1 slot PCI slot
I/O 커넥터 I/O 커넥터(connector) 컴퓨터 본체 내부에서 HDD나 ODD 같은 입출력장치들을 위한 접합부로 필요 내장형 드라이브와 LED 램프 등 각종 I/O 장치들은 I/O 커넥터를 통해 시스템보드에 케이블 선으로 연결 범용으로 설계되지 못하고 해당 커넥터에 맞는 인터페이스 규격을 사용해야
I/O 커넥터 사례 SATA 커넥터 ☞ HDD, ODD 메모리 슬롯 USB 헤더 ☞ USB 연장 케이블을 연결하는 커넥터 전원 커넥터 IDE 커넥터 ☞ SATA 이전
I/O 포트 I/O 포트(port) 포트(port)는 <항구>, 포털(portal)은 정문이라는 뜻 인터넷 포털 사이트는 마치 백화점 정문을 들어선 것처럼 다양한 볼거리를 안내하는 로비에 도달한 느낌 I/O 포트(port) 주변장치를 연결하는 I/O 데이터의 출입구 컴퓨터시스템이 주변장치나 네트워크 회선과 자료를 주고받기 위해 컴퓨터 본체 외벽에 설치한 접합부 접속 케이블을 꽂을 수 있도록 본체 외벽에 출구(outlet)를 만들고 내부적으로는 시스템보드에 연결 범용으로 설계되지 못하고 해당 I/O 포트에 맞는 인터페이스 규격을 사용해야
I/O 포트 사례 사라져가는 I/O 포트들 PS/2, LPT, COM ☞ USB, IEEE 1394 등으로 대체 D-Sub ☞ DVI, HDMI, DisplayPort 등으로 대체 LPT (병렬포트) 프린터 등 PS/2 COM (직렬포트) D-Sub 키보드 마우스 아날로그 비디오 모뎀 등
Practice ☞ surf the net (인터넷 검색 실습) <기가바이트><제품><메인보드> 검색해 다음 <I/O 포트>의 이름 또는 용도를 조사하라. ASUS 등 다른 사이트에서 찾아도 OK!
실습결과 ☞ I/O 포트 이름 또는 용도 조사 S/PDIF ☞ digital audio output 안테나 커넥터 ☞ Wi-Fi 와 Bluetooth 용 안테나 연결 S/PDIF antenna connector LAN (RJ45) HDMI IEEE 1394 Thunderbolt DisplayPort USB 2.0 DVI eSATA USB 3.0 audio jack ASUS 등 다른 사이트에서 찾아도 OK!
사라져가는 I/O 포트와 커넥터 오리저널 IBM PC(1981)에서 유래 직렬포트(serial port) ☞ 모뎀 등 연결 병렬포트(parallel port) ☞ 프린터 등 연결 RS-232 connector 프린터 쪽 IEEE 1284 connector
사라져가는 I/O 포트와 커넥터 PS/2 포트 IBM PS/2 모델(1987)에서 유래 PS/2 타입 마우스나 키보드 연결 Mini-DIN connector
USB 포트와 커넥터 USB 포트 (1996) 다양한 plug 사용 Type A Type B Mini A Mini B Micro A Micro B
IEEE 1394 포트와 커넥터 IEEE 1394 포트 (1995) USB처럼 저속 및 고속 주변기기 연결 FireWire 400 4접점 6접점 FireWire 800 IEEE 1394 connector 9핀 이더넷 타입
썬더볼트 포트와 커넥터 Thunderbolt 포트 (2011) 기존 모든 I/O 버스 인터페이스를 통합 대체할 목적 connector logo LAN IEEE 1394 Thunderbolt USB
eSATA 포트와 커넥터 eSATA 포트 (2003) 외장형 SATA 포트 외장형 eSATA connector 본체 외부 포트 본체 내부 커넥터 내장형 SATA connector cf.
LAN 포트와 커넥터 LAN 포트, 이더넷 포트(Ethernet port) 전화선의 modular connector(1975)에서 유래 8P8C(8 positions, 8 contacts) 8칸, 8접점 타입 (cf.) 전화선에 사용되는 잭은? 6P4C(6 positions, 4 contacts) 6칸, 4접점 타입 RJ45 커넥터 LAN RJ11 커넥터 전화
확장카드 확장카드(expansion card) 시스템보드의 확장 슬롯에 장착되어 컴퓨터에 부가능력을 제공하는 기판 확장 어댑터(adapter), 애드-인 보드(add-in board), 인터페이스 카드(interface card), 컨트롤러(controller, 제어기) 혹은 그냥 카드라고도 한다 초기 IBM PC는 개방형 구조를 허용한 설계 확장 슬롯이 그 역할을 담당 시스템보드에서 기본으로 제공하지 않는 기능을 부가하기 위해 확장 슬롯을 제공 덕분에 사용자들이 조립과 업그레이드를 쉽게 함
확장카드 사례 기가바이트사의 그래픽카드 NVIDIA GeForce GTX TITAN (2013) PCI Express 3.0 확장 슬롯에 장착 그래픽카드에 방열판과 냉각팬을 덮은 모습
확장카드 같은 확장카드라도 다양한 이름으로 불림 윈도우 등 특정 운영체제나, 인텔 등 특정 하드웨어 플랫폼에서 선호하는 명칭이 있음 <카드>는 분리되는 별도의 기판이라는 표현 ☞ <어댑터>나 <컨트롤러>가 더 넓은 의미
I/O 버스의 충돌 하드웨어 장치의 충돌 주로 새로운 장치를 설치할 때 I/O 버스에서 일어나는 전기적인 충격 과거의 확장카드는 지능적이지 못해 쉽게 충돌 각 장치는 CPU가 허락하는 시점에서 I/O 버스로 데이터를 내놓아야 함 두 소자가 동시에 I/O 버스를 차지하려면 전기적 충돌 I/O 버스에서 충돌이 발생하면 요즘 운영체제는 사용자 화면에 경고 표시 드물지만 시스템버스나 메모리 주소를 침해하는 것처럼 심각한 충돌이 발생하면 아예 부팅되지 않을 수도
I/O 버스의 충돌 I/O 버스의 충돌 초기 IBM PC에 사용된 ISA 버스 등 과거의 확장카드 지능적이지 못해 자동설정 기능이 없음 I/O 주소와 IRQ 번호를 보드 상의 점퍼로 조정 I/O 장치들이 같은 자원(특정 I/O 주소, 특정 IRQ 번호, 특정 DMA 채널)을 동시에 차지하려면 충돌 I/O 주소 충돌 ☞ 전송될 I/O 주소가 중복 IRQ 번호 충돌 ☞ 인터럽트 컨트롤러와 충돌 DMA 채널 충돌 ☞ DMA 컨트롤러와 충돌 각 장치가 하나의 DMA 채널을 확보해야 데이터 전송 보통 몇 개뿐인 DAM 채널을 공유해 사용하므로, 장치가 바뀔 때마다 채널을 정확히 리셋시켜야
충돌의 방지 충돌의 방지 ☞ 요즘 I/O 버스 PnP 기능 ☞ 추가 하드웨어가 충돌 없이 자동설정 IRQ 공유(shared IRQ) 허용 한정된 IRQ를 공유하도록 I/O 버스 컨트롤러가 허용 여러 개의 입출력장치를 구분해 IRQ를 처리 어떤 장치가 IRQ 요청한지 I/O 버스 컨트롤러가 식별 지능적인 버스 마스터링 버스 컨트롤러가 매우 지능적이라 CPU와 다른 별개의 프로세서처럼 동작, CPU가 전송에 개입하지 않음 요즘 I/O 장치들은 DMA 컨트롤러 대신 자신들이 직접 버스 마스터가 됨, I/O 버스 컨트롤러가 이를 조정 전송속도가 빠르고 CPU의 부담을 경감
PnP 플러그-앤-플레이(plug and play, PnP) <장착하면 바로 동작한다>는 뜻 컴퓨터시스템에 추가로 장착되는 하드웨어를 위한 산업표준 ☞ 하드웨어 설정이 자동으로 이루어짐 확장 어댑터나 주변장치를 추가할 때 운영체제는 표준 타입 가운데 어떤 종류인지 스스로 인식 확장카드, 주변장치, 시스템보드, OS에서 지원해야 PnP 지원이 가능한 확장카드 어댑터가 I/O 버스를 통해 자신의 I/O 주소와 IRQ 번호에 대한 정보를 운영체제에게 줄 수 있어야 어댑터가 운영체제의 지시에 따라 스스로 I/O 주소와 IRQ 번호를 다른 값으로 조정할 수 있어야
Practice ☞ 어댑터 종류 확인 (실습) 윈도우 7 <시작><컴퓨터>에서 마우스 우측 버튼<속성><장치 관리자> ☞ 어댑터 종류 확인 ? 표시 ☞ OS가 모르는 장치 ! 표시 ☞ 충돌 또는 문제 발생 Windows 7
Practice ☞ 시스템 리소스 확인 (실습) <장치관리자> <보기> <리소스(종류별)> 시스템 자원 (resource) ☞ 메모리, IRQ, I/O, DMA 용도 확인 Windows 7
Practice ☞ 어댑터 종류 확인 (실습) 윈도우 8.1 <시작>에서 마우스 우측 버튼<장치 관리자> ☞ 어댑터 종류 확인 ? 표시 ☞ OS가 모르는 장치 ! 표시 ☞ 충돌 또는 문제 발생
Practice ☞ 시스템 리소스 확인 (실습) <장치관리자> <보기> <리소스(종류별)> 시스템 자원 (resource) ☞ 메모리, IRQ, I/O, DMA 용도 확인
7.4 버스 사이클
7.4 버스 사이클 동기식 버스 비동기식 버스
버스 사이클 버스 사이클(bus cycle) 버스를 이용해 메모리나 I/O 장치에서 데이터를 읽거나 쓰기 위해 반복적으로 수행해야 하는 일련의 연속동작 CPU의 데이터 전송은 버스 사이클 단위 메모리버스 사이클 ☞ 기억장치를 구동 I/O 버스 사이클 ☞ 입출력장치를 구동 로컬버스에서 동작발생 시간을 설계하는 방법 동기식 버스 ☞ 시스템버스 클럭에 동기되어 동작결정 비동기식 버스 ☞ 다른 신호의 발생 여부로 동작결정
동기식 버스 동기식(synchronous) 버스 메모리나 I/O 장치의 로컬버스가 시스템버스의 클럭에 동기를 맞춤 구조가 간단해 하드웨어 설계가 간결하고 정확하기 때문에 고속 및 고성능 컴퓨터시스템을 설계하기 용이 버스 사이클은 보통 여러 개의 클럭이 모여 구성 최소 3~4개 이상 모여 하나의 버스 사이클을 구성 주소, 데이터, 읽기, 쓰기 등 버스 상의 신호들이 시스템버스 클럭에 순차적으로 동기 되어 동작 모든 클럭에서 데이터 전송이 일어나는 것이 아님 정확한 읽기와 쓰기 시점에서만 데이터가 전송 느린 소자를 배려해 대기(wait) 클럭을 계속 추가
동기식 버스 신호들이 버스 클럭에 순차적으로 동기 되어 동작 대기 클럭 추가 정확한 데이터 전송시점
비동기식 버스 비동기식(asynchronous) 버스 메모리나 I/O 장치의 로컬버스가 시스템버스 클럭에 동기 되는 시간을 기다리지 않고 바로 동작 ☞ 시간 낭비 적지만 처리 순서를 설계하기 복잡해 고성능 컴퓨터시스템을 설계하기에는 부적합
비동기식 버스 읽기 동작과 쓰기 동작의 순서 설계 (예)
비동기식 버스 [그림 7-11] ☞ 읽기 동작의 설계 ① CPU가 버스 상에 읽기 주소, 읽기 신호를 띄워 놓고 잠시 후 신호가 안정되면 마스터(master) 동기 신호를 내보내 이 사실을 알림, 이를 보고 ② 기억장치나 입출력장치가 버스 상에 읽기 데이터를 출력해 신호가 안정되면 슬레이브(slave) 동기 신호를 내보내 이 사실을 알림, 이를 보고 ③ CPU가 데이터를 읽어오고 읽기가 완료되면 읽기 주소, 읽기 신호와 마스터 동기 신호를 없애 버스 상에 이 사실을 알림, 이를 보고 ④ 기억장치나 입출력장치는 버스 상에서 읽기 데이터와 슬레이브 동기 신호를 없애 전송을 완료
비동기식 버스 [그림 7-11] ☞ 쓰기 동작의 설계 ① CPU가 버스 상에 쓰기 주소, 쓰기 신호, 쓰기 데이터를 띄워 놓고 잠시 후 신호가 안정되면 마스터 동기 신호를 내보내 이 사실을 알림, 이를 보고 ② 기억장치나 입출력장치에서 쓰기 데이터를 기록할 준비가 되면 슬레이브 동기 신호를 내보내 버스 상에 이 사실을 알림, 이를 보고 ③ CPU가 데이터를 기록하고 쓰기가 완료되면 쓰기 주소, 쓰기 신호, 쓰기 데이터와 마스터 동기 신호를 없애 버스 상에 이 사실을 알림, 이를 보고 ④ 기억장치나 입출력장치는 슬레이브 동기 신호를 없애 전송을 완료
7.5 버스 컨트롤러
7.5 버스 컨트롤러 버스 마스터링 버스 중재기
버스 컨트롤러 버스 컨트롤러(bus controller) 메모리버스나 I/O 버스를 제어하는 회로나 칩 메모리버스 컨트롤러 메인메모리인 램 모듈을 시스템버스에 직접 연결 I/O 버스 컨트롤러 I/O 장치들을 시스템버스에 연결 I/O 장치들은 CPU의 부담을 최소화하도록 I/O 버스 컨트롤러의 허락을 받고 데이터를 전송 속도가 서로 다른 여러 종류의 I/O 버스를 사용
버스 컨트롤러 PCI이후 요즘의 I/O 버스 컨트롤러 CPU에 부담 주지 않고 독립적인 프로세서처럼 동작 누구라도 버스 마스터가 되기를 요청하면 한 순간에 하나의 버스 마스터만 존재하도록 조정 어떤 I/O 장치가 일단 버스 마스터가 되면 버스를 제어하고 시스템 메모리에 대해 읽고 쓰기를 요청 I/O 장치는 I/O 버스에 읽기와 쓰기 신호를 내보냄 I/O 버스 컨트롤러는 메모리버스 컨트롤러에 이를 대신 전달해 시스템버스의 사용을 요청
버스 마스터링 버스 마스터링(bus mastering) 주변장치가 CPU의 간섭을 받지 않고 독자적으로 메모리와 I/O 장치 사이에 데이터를 전송할 수 있도록 해주는 버스 설계 기술 I/O 장치와 메모리 사이에 데이터 전송이 이루어지는 동안 CPU가 다른 작업을 할 수 있어 다중작업에 유리 CPU가 데이터 입출력을 총괄해 일일이 간섭하면 주변장치 간 데이터 전송은 느려지는 것이 보통 ☞ 버스 마스터링 기술로 해결
버스 마스터 버스 마스터(bus master) 버스를 직접 제어하고 점유해 사용하는 주체 버스 상에 있는 주소 신호와 버스 제어신호의 흐름을 통제하고 데이터의 흐름을 직접 관장 버스 상 버스 마스터와 다른 입출력장치와의 관계는 마스터(master)와 슬레이브(slave)의 주종관계 버스 상에는 여러 개의 버스 마스터가 존재 어떤 한 순간에는 하나의 버스 마스터만 버스를 장악 어느 한 순간에 하나의 장치에서 다른 하나의 장치로만 데이터가 전송되도록 버스 컨트롤러가 중재 성능이 높아진 주변장치 내부에 버스 마스터를 내장 각종 장치에 내장된 하드웨어나 소프트웨어가 담당
버스 중재 신호 버스 중재(bus arbitration) 버스 마스터 간에 일어나는 버스 경합 문제를 조정 버스 중재기는 누가 먼저 버스를 사용할 지, 한 번에 한 장치만 버스를 사용하도록 버스 중재 신호로 조정 버스 중재 신호, 중재 버스(arbitration bus) 버스 요청(bus request) 신호 ☞ 버스 마스터가 버스 컨트롤러에게 보내는 버스를 사용하겠다는 요청 신호 버스 사용 중(bus busy) 신호 ☞ 버스 마스터가 버스 컨트롤러에게 보내는 버스가 사용 중임 알림 신호 이 신호로 버스 컨트롤러는 버스 사이클 완료를 검사 버스 승인(bus grant) 신호 ☞ 버스 컨트롤러가 버스 마스터에 보내는 버스 사용 허락 신호
버스 중재기 버스 중재기(bus arbiter) ☞ 버스 컨트롤러가 역할 버스 마스터 간에 버스 사용권에 대한 경합이 발생하면 누가 먼저 버스를 사용할 지 결정해주는 장치 버스마스터에서 버스 요청 신호가 들어오면 버스 사용 중 신호를 검사, 우선순위를 조정해주거나 새로 결정, 버스 승인 신호를 보내 이를 허락 ① 버스 마스터가 버스 컨트롤러에 버스 사용을 요청 ② 버스 컨트롤러는 기존 버스 사이클의 완료를 검사 ③ 동시 요청 들어온 버스 마스터의 우선순위 중재 ④ 버스 컨트롤러에서 버스 마스터가 버스사용권 획득 ⑤ 버스 마스터가 버스로 주소와 읽기, 쓰기 신호 보냄 ⑥ 버스를 통해 데이터 전송이 진행
7.6 인터럽트
7.6 인터럽트 인터럽트 인터럽트의 종류 CPU 리셋 인터럽트 제어 신호 인터럽트 제어 방식
인터럽트(interrupt) 인터럽트 ☞ <방해하다, 중단시키다, 가로막다>의 뜻 하드웨어나 소프트웨어가 즉시 주목할 사건이 일어났을 때 프로세서에게 경보를 알리는 신호 작업 중단을 요구하는 우선순위가 매우 높은 통지 인터럽트가 발생하면 현재 작업 상태를 저장하고 해당 인터럽트 핸들러(handler) 프로그램을 실행 인터럽트 서비스 루틴(ISR)이라고도 함 인터럽트 벡터(interrupt vector) 테이블 메인메모리의 특정 영역에 자리해 각 인터럽트 요청에 대한 인터럽트 핸들러의 시작 주소들을 저장 인터럽트 폭풍(interrupt storm) ☞ 인터럽트 처리 시간이 과도해 시스템 성능에 심각하게 방해주는 현상
오리지널 IBM PC의 인터럽트 16개 하드웨어 인터럽트 IRQ 신호와 소프트웨어 인터럽트를 포함해 총 256개의 인터럽트 벡터를 사용 각 IRQ는 실행 우선순위를 가지며 가변 요즘은 하나의 하드웨어 인터럽트 번호를 여러 장치가 공유해 사용
인터럽트의 종류 인터럽트의 종류 하드웨어 인터럽트 소프트웨어 인터럽트 정전 등 하드웨어적인 문제, 입출력장치의 데이터 전송 요청, 타이머 종료, 프로세서 간 통신 등에서 발생 각 I/O 장치와 인터럽트 컨트롤러가 연결되는 고유 IRQ 선이 필요 ☞ 하드웨어 인터럽트의 개수는 프로세서에 연결되는 IRQ 선의 개수에 제한 소프트웨어 인터럽트 프로그램 명령 수행에 오류가 발생한 경우, 프로그램 사용자의 의도로 시스템을 호출한 경우 등에서 발생 물리적인 선이 필요 없어 수백 개를 사용
인터럽트의 종류 하드웨어 인터럽트 주로 CPU 외부 장치의 요청에 의해 발생 외부 장치에서 일어나는 사건은 언제 일어날지 모르기 때문에 프로세서의 시간 낭비를 피하는 방법으로 도입 CPU 내부에 인터럽트 마스크(mask) 비트를 설정해 외부 하드웨어 인터럽트를 무시할 수 있도록 설계 막을 수 있는 인터럽트(maskable interrupt) : IRQ 사용 막을 수 없는 인터럽트(non-maskable interrupt, NMI) 우선순위가 가장 높은 절대 무시될 수 없는 인터럽트 하드웨어 에러에서 발생하거나 CPU의 심각한 오동작을 방지하기 위해 일부러 발생시킴 ☞ 전원장치 실패 인터럽트나 타임아웃 인터럽트에 따른 CPU 리셋이 대표적
인터럽트의 종류 하드웨어 인터럽트 (계속) 소프트웨어 인터럽트와 달리 CPU와 비동기적 다른 명령을 실행하는 도중에도 발생하므로 프로그래밍 작업에서 추가적인 고려 필요 다중 프로세서에서 프로세서 간 멀티태스킹을 위한 방법의 하나로도 공통으로 사용 이런 기술을 인터럽트 구동(interrupt-driven)이라 함 인터럽트에 의해 컴퓨터가 작동되는 기술로 소프트웨어적인 폴링과 반대 개념
인터럽트의 종류 소프트웨어 인터럽트 주로 CPU 내부 명령의 실행에 의해 발생 사용자 의도로 운영체제를 호출하는 경우 프로세서 자체의 예외적인 조건에 의하거나 함정 또는 예외(exception) ☞ (ex.) divide-by-zero 발생 일련의 특별한 명령어에 의해 발생 사용자 의도로 운영체제를 호출하는 경우 응용프로그램이 필요할 때 BIOS나 디바이스 드라이버 같은 OS 수준에서 수행이 가능한 서비스를 요구 (ex.) 디스크에 데이터를 쓰거나 읽으려면 디스크 컨트롤러와 통신하기 위해 소프트웨어 인터럽트를 사용 일종의 감시자 호출(supervisor call, SVC) 사용자 의도로 OS 서비스를 원하는 소프트웨어 요구
CPU 리셋 컴퓨터시스템의 전원장치(power supply) CPU 리셋 회로 전력용량(W)에 여유가 있어야 용량이 부족하면 시스템 동작이 불안 실효치 계산에서 전력(P)=전류(I)×전압(V) 전류공급은 그 흐름을 유지하려는 속성 전력이 부족하면 우선 전압이 떨어짐 ☞ 낮은 전압을 공급받으면 디지털 회로가 오동작 CPU 리셋 회로 낮은 전압으로 발생하는 오동작 방지 CPU가 오류로 동작이 정지되었을 때도 작동
전원장치 실패 인터럽트 전원장치 실패(power failure, 정전) 인터럽트 CPU 리셋 회로는 전원 상태를 항상 모니터링(감시) 전원을 관찰하다 일정 전압이하로 떨어지면 작동 (ex.) 오리지널 IBM PC는 +5V전원이 +4.75V 정도 이하로 떨어지면 자동으로 CPU에 리셋을 걸도록 설계 UPS(uninterruptible power supply) <방해받지 않는 전원 공급장치>, 무정전 전원장치 주로 백업용 배터리를 사용해 정전 시 일정시간 동안 교류 전원을 공급해주는 장치 이동용 컴퓨터는 UPS 대신 직류 배터리를 사용 배터리 용량(ampere-hour, Ah)=전류(A)×시간(hour) 남아있는 배터리 사용시간을 예측할 수 있음
타임아웃 인터럽트 타임아웃(timeout) 인터럽트. CPU 리셋 회로의 워치독 타이머(watchdog timer) 워치독 ☞ <집 지키는 경비견>, 감시인, 감시단체 일정한 시간 간격으로(ex. 10ms) CPU의 타이밍 회로에서 발생시킨 신호를 입력으로 받아 감시 일정 시간동안(ex. 0.5초) 이 신호가 발생하지 않으면 CPU가 작동하지 않고 정지된 것으로 판단 ☞ 이 경우 리셋 회로가 CPU에 자동으로 리셋을 걸도록 하드웨어를 설계
인터럽트 제어 신호 인터럽트 제어 신호 인터럽트 요청(interrupt request, IRQ) 신호 인터럽트 발생시 I/O 장치가 CPU에 버스 사용을 요청 인터럽트 확인(interrupt acknowledge, INTA) 신호 CPU가 외부 장치에 인터럽트 요청 접수를 알림 인터럽트 컨트롤러는 CPU와 입출력장치 간에 비동기적인 데이터 전송을 지원, 버스 사용권을 조정 인터럽트를 사용하는 I/O 장치가 전송 준비가 되면 CPU측에 IRQ 신호를 보내 데이터 전송을 요구 CPU는 전송을 요구한 장치를 조사, 이 장치를 위해 I/O 버스를 사용하고 INTA 신호를 보내 IRQ를 클리어
인터럽트 제어 신호 키보드 인터럽트의 동작 예 키보드 컨트롤러와 인터럽트 컨트롤러는 주로 메인보드 상의 칩셋인 I/O 컨트롤러에 내장 키의 위치에 해당하는 각 바이트 데이터를 전송할 때마다 다음 과정을 반복 키보드 컨트롤러는 키보드로부터 주로 시리얼 데이터를 받아 8비트씩 모아 인터럽트 컨트롤러에 전송 요청 인터럽트 컨트롤러는 CPU에 IRQ 신호를 보내 키보드 데이터를 가져가도록 알림, 전송 완료 후 인터럽트 컨트롤러는 키보드 컨트롤러에 INTA 신호를 보내 이미 전송한 데이터를 I/O 버스에서 클리어
인터럽트 제어 방식 인터럽트 제어 방식 인터럽트 요청 장치가 여럿이면 CPU는 인터럽트 컨트롤러를 통해 이들을 중재하고 제어 병렬식 연결이 가장 빠르고 안정적인 제어 방법 그러나 실제 프로세서 칩 외부에 하드웨어 인터럽트를 제어하는 신호 핀들이 불과 몇 개 뿐 하드웨어 장치가 많아지면 제어선을 다중화해야 또는 직렬식 등 다른 인터럽트 제어 방법을 사용해야
병렬식 인터럽트 제어 각 I/O 장치마다 별도의 IRQ 선과 INTA 선 사용 IRQ 신호선 분리 ☞ 인터럽트를 요청한 장치를 CPU가 쉽게 찾음
병렬식 인터럽트 제어 병렬식 인터럽트 제어 방식의 처리 순서 상태레지스터의 인터럽트 마스크 플래그 비트 ① 주변장치가 CPU에 인터럽트 요청 IRQ 신호를 보냄 ② CPU에서 현재 작업내용을 저장 ③ CPU가 인터럽트를 처리 ④ CPU가 주변장치에 인터럽트 확인 INTA 신호 보냄 ⑤ INTA 신호를 받은 주변장치는 IRQ 신호를 삭제 ⑥ CPU가 본래의 상태로 복귀 상태레지스터의 인터럽트 마스크 플래그 비트 CPU에서 어떤 한 곳의 인터럽트 요청을 받아들이면 불가능(disable)으로 설정 ☞ 다른 인터럽트 요구가 들어와도 기다리게 함 또는 우선순위를 정해 다중 인터럽트로 분기
직렬식 인터럽트 제어 하나의 IRQ 신호선과 하나의 INTA 신호선 공동사용 IRQ 선이 분리되지 않아 요청한 장치를 CPU가 찾아야 먼 쪽 장치들은 순위가 밀려 오래 기다릴 우려
직렬식 인터럽트 제어 직렬식 인터럽트 제어 방식의 처리 순서 IRQ 신호가 들어오면 CPU가 일단 INTA로 확인 ① 주변장치가 CPU에 인터럽트 요청 IRQ 신호를 보냄 ② CPU가 IRQ를 보낸 장치 조사 위해 INTA 신호 보냄 ③ 해당 장치가 I/O 버스로 인터럽트 벡터 ID 보냄 ④ CPU에서 현재 작업내용을 저장 ⑤ CPU가 인터럽트를 처리 ⑥ CPU가 본래의 상태로 복귀 IRQ 신호가 들어오면 CPU가 일단 INTA로 확인 INTA 신호는 각 장치를 순서대로 통과해 인터럽트를 요청한 장치에 이름 해당 장치는 자신을 식별하도록 고유한 ID, 즉 인터럽트 벡터(vector)를 I/O 버스를 통해 CPU에게 보냄
소프트웨어 폴링 방식 인터럽트 제어 하나의 IRQ 신호선만 공동으로 사용 IRQ 신호가 들어오면 각 I/O 장치에 해당하는 주소를 차례로 조사해 인터럽트를 요구한 장치를 찾음 시간은 많이 걸리나 인터럽트 검사 주기와 우선순위를 가변시킬 수 있어 편리 CPU가 인터럽트를 요구한 장치를 I/O 주소로 판별
- End of Chapter -