배고픈 개발자 이야기

6.보조저장장치 & 7.시스템버스, I/O및 인터럽트 & 8.고성능 컴퓨터 시스템 구조 본문

전산학/컴퓨터구조

6.보조저장장치 & 7.시스템버스, I/O및 인터럽트 & 8.고성능 컴퓨터 시스템 구조

이융희 2019. 9. 14. 15:09
728x90

6. 보조저장장치

6.1 자기 디스크

자화될 수 있는 물질로 코팅된 플라스틱(플로피)이나 금속(하드)을 이용한 원형

디스크 구성요소

-원형 평판(circular platter) : 하드디스크(알루미늄) / 2,3,4장
-헤드(head) : R/W, 전도성 코일을 통하여 표면을 자화(magnetize) 평판수*2
-디스크 팔(disk arm) : 헤드를 이동시키는 장치
-구동장치(actuator) : 디스클 팔을 움직이는 모터

PATA -> SATA, SCSI(서버)
섹터 : 디스크에 한 번에 쓰거나 읽는 데이터 크기의 최소 단위
섹터간 갭 : 섹터 구분 간격
트랙간 갭 : 간섭 오류 방지

등각속도 : 제어를 간단히 하기 위해 안쪽 바깥쪽 크기가 다른 섹트의 데이터를 동일하게 함
디스크 형식화 : 섹터의 시작 끝, 제어 정보등을 디스크상 특정위치에 저장하는 과정(첫 구매시)
600바이트 : 갭123(88), ID(7)/데이터 필드(515) : SYNCH 1, CRC 2byte

디스크 엑세스 시간

탐색시간 : 헤드를 해당 트랙으로 이동
회전 지연시간 : 원하는 섹터가 헤드 아래로 회전되어 오는 시간

디스크 엑세스 시간 = 탐색 시간 + 회전 지연 시간 + 데이터 전송 시간(제어기 시간)

6.2 RAID

Disk Array

한 개의 대형 디스크 말고 여러 개의 디스크들을 서로 연결하여 디스크 유니트로 구성(가성비 좋음)
장점 : 동시 엑세스 가능, 병렬 데이터 채널에 데이터 전송 시간 단축 
단점 : 라운드-로빈방식(순차탐색) 에서 하나 고장나면 연결된것 못씀, 빨리 고장남(MTTF)

RAID 제안

결함 허용도를 높이기 위해 제안됨 -> 검사 디스크를 추가하여 오류 검출 및 복구 기능 추가

RAID의 종류

RAID-0 : 단순 디스크(라운드-로빈), 디스크를 한개처럼 보여줌
RAID-1 : 반사 디스크 사용(같은거 두개) : 하나 결함나면 반대편에꺼 복사해옴(은행등)
RAID-2 : bit단위로 저장, 해밍 코드 사용 각 디스크에 parity bit disk추가 (오류검출 및 자가 정정)
RAID-3 : 작은 블락 단위로 저장, Parity 디스크 하나(XOR사용)
RAID-4 : 블락 단위 인터리빙 방식, Parity 디스크 하나 3,4 둘다 parity갱신이 필요함(병목 현상 발생)
RAID-5 : RAID-4와 동일 패리티 디스크(라운드-로빈) 방식으로 분산하여 병목 현상 해소
RAID-6 : RAID-5와 같은데 패리티 백업을 하여 나누어 저장 (데이터가 손실되려면 3개의 디스크가 동시 불량)
중첩 RAID : RAID 2개 이상을 중첩하여 사용하는 경우

6.1 광 저장장치

CD-ROM : 고강도 레이저로 데이터 저장, 저 레이저로 읽음(반사되어 오는걸로 0 1 구분)
DVD : CD보다 많은 데이터, 단/양면 단/복층 데이터 저장 방식
BluRay : 짧은 파장 레이저 사용하여 트랙폭 축소(용량 증가)

메모리 계층 구조의 개요

캐시와 가상메모리의 용도

register - (words) - cache - (lines) - main memory - (pages) - virtual memory

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

7.1 시스템 버스

주소 버스(단방향) : 기억장치, 입출력장치, 비트 수에 따라 접속 가능한 기억장치 용량 결정됨
데이터 버스(양방향) : CPU, 메모리등 사이에 한번에 전송가능한 비트 수 만큼의 선이 있음
제어 버스(단방향-들어오고 나가는게 구별) : CPU, 기억장치, I/O장치 사이의 신호 전송
16bit 주소 버스 : 2^16 = 64K개, 바이트 단위 지정일 경우 64Kbyte
24bit : 2^24 = 16M, 바이트 단위 16Mbyte

주요 제어 신호

기억장치 쓰기
기억장치 읽기
입출력 쓰기
입출력 읽기
전송 확인 신호

7.2 버스 중재(통제)

버스 연결 요소들이 버스를 사용하려할 때 충돌 방지
버스 마스터 : 버스를 사용하려고 하는 주체(CPU, RAM등)
버스 중재 : 순서를 정해서 사용할 수 있게 해주는 동작

중재 버스

bus request 신호 : 사용하려 요구하는 신호
bus grant 신호 : 요구한 마스터에게 사용 허가하는 신호
bus busy : 버스가 사용중임을 나타내는 신호

인터럽트 버스

interrupt request 신호 : I/O 장치가 인터럽트를 요구
interrupt acknowledge 신호 : CPU가 인터럽트 요구를 인식
bus clock : 동기식 버스 동작의 시작 시간 싱크로용
reset : 모든 시스템 요소 동작을 초기화하는 신호

버스 대역폭 : 버스 속도의 척도로 단위 시간당 전송할 수 있는 데이터 양
ex) 클럭 20Mhz, 버스폭 8byte : 대역폭 = 버스폭 X 클럭 bps

시스템 버스의 기본 동작

쓰기 동작 : 버스 마스터가 버스 사용권 획득, 버스를 통해 주소와 데이터 및 쓰기 신호 전송
읽기 동작 : 버스 마스터가 버스 사용권 획득, 주소와 읽기 신호를 보내고 데이터 전송 기다림

버스 분류

동기식 버스 : 모든 버스 동작들이 공통의 버스 클럭을 기준으로 발생
장점 : 회로 간단, 클락 주기가 길면 안좋음
비동기식 버스 : 버스 동작들의 발생 시간이 관련된 다른 버스 동작의 발생 여부에 따라 결정(M/S 의존)
단점 : 낭비되는 CLK은 없지만 회로가 복잡하고 빠른 시스템에서 안좋음

버스 중재 방식

위치에 따른 분류
중앙집중식 중재 방식 : 모든 버스 요구를 하나의 중재기에서 통재
분산식 중재 방식 : 버스 마스터 마다 중재기 갖고 있어야 하며 컨트롤하기 어려움

병렬 중재 방식 : 각 버스 마스터가 요구선을 각각 갖고 있어 요구 승인 신호가 각각 필요함

1. 중앙집중식 고정우선순위 방식 : 모든 마스터가 접속 (가까울 수록 높은 우선순위(요청 AND로 연결 +1, +1 +2))
2. 분산식 고정우선순위 방식 : 모든 마스터가 중재기 하나씩 보유 BUSY 확인하고 사용시작, 회로 복잡
3. 가변우선순위 방식 : 중재 회로 복잡, (회전 우선순위)버스 사용 끝날 때마다 우선순위 -1 또는 최저 우선순위
-임의 우선순위 방식, 동등 우선순위 방식(FIFO), 최소-최근 사용 방식(오래 사용하지 않은 마스터에게 우선순위)

직렬 중재 방식

1. 중앙집중식 직렬 중재 방식 : (데이지-체인)하나의 선에 순서대로 요구한 마스터가 있을 경우 승인(USB)
2. 분산식 직렬 중재 방식 : 각 마스터마다 중재기 있다는 것만 다름, 중재기가 직렬로 연결
단점 : 한 지점만 결함이 발생해도 전체 시스템 동작 중단

폴링방식 : 중재기가 마스터에게 주기적으로 일일이 물어봄

1. 하드웨어 폴링 : 중재기, 마스터 간에 각각의 폴링선 존재(2진 폴링 주소 : logN개), 느리게 쓸 때 좋음
2. 소프트웨어 폴링 : 버스 중재기내의 프로세서가 관장하는 방식
단점 : 하드웨어에 비해 느림 / 장점 : 우선순위 변경이 유리

7.3 I/O 장치의 접속

7.3.1 I/O 제어

제어 방법이 다르고 많아서 실제 시스템 버스 접속X, I/O 제어기(인터페이스)를 사용
CPU처리 속도랑 I/O장치 전송속도 차이가 커 직접 교환 불가능, 데이터 형식이 다름

I/O 제어기 주요 기능

I/O 장치의 제어와 타이밍 조정
CPU, I/O 장치와 통신 담당
데이터 버퍼링 기능 수행
오류 검출

I/O 주소지정

장치를 file로 연결하여 주소로 지정(linux)
상태 레지스터 주소 : 장치 상태와 오류 검사 결과를 비트로 나타냄
제어 레지스터 주소 : CPU가 보낸 명령을 저장
-기억장치-사상 I/O : 기억장치 주소 영역 일부분을 I/O 제어 주소로 할당 / 프로그래밍 제어가능
-분리형 I/O : 따로 주소 저장하는 곳 사용 / 프로그래밍 불편, 기억장치 리소스 감소 없음

프로그램을 이용한 I/O : CPU가 직접 검사 및 처리, 간단하지만 CPU 리소스소모

7.4 인터럽트를 이용한 I/O : I/O동작 동안 CPU가 다른 작업을 처리할 수 있게 하는 방식

  • 다중-인터럽트 방식 : 각각의 인터럽트 요구선으로 확인하고 통신하는 방법
    장점 : 인터럽트 요구 마스터를 쉽게 찾을 수 있음 / 단점 : 복잡, CPU핀의 수로 제한됨
  • 데이지-체인 방식(USB) : I/O제어기들 직렬 접속하여 인터럽트 전달(선 하나)
    장점 : 하드웨어 간단 / 단점 : 우선순위 낮은 장치는 서비스를 오래 받지 못하는 경우 발생
  • 소프트웨어 폴링 방식 : CPU가 일일이 물어보는 방식
    장점 : 우선순위 변경 용이 / 단점 : 처리 시간이 오래 걸림

7.5 DMA(직접기억장치액세스)를 이용한 I/O

CPU 개입 없이 기억장치와 I/O장치 데이터 전송하는 방식(사이클 훔침)

DMA 처리 순서

1. CPU가 DMA 제어기에 명령 전송(I/O 주소, 연산 지정자, 주기억장치 주소, 단어 수)
2. DMA제어기는 CPU로 버스 요구 신호 전송
3. CPU가 DMA제어기로 버스 승인 신호 전송
4. DMA제어기가 주기억장치 데이터를 읽어 디스크 제어기에 저장
5. 전송완료까지 2~4 반복
6. 완료되면 CPU로 INTR 신호 전송

문제점 : 데이터 전송 마다 버스를 두번씩사용(성능 저하) -> I/O버스 따로 두거나 DMA제어기 따루 둠
I/O 프로세서 사용(I/O채널)

IOP를 이용한 I/O : 고급 컴퓨터 or 입출력이 많이 필요할 때 사용

7.6 외부 버스

ATA(IDE) 하드하나, SATA 여러개, eSATA +외부연결, firewire(오디오/비디오)
USB 비대칭(serial->tree 변형된 데이지 체인, 여러 허브)

8. 고성능 컴퓨터시스템 구조

8.1 병렬처리의 개념 및 필요성

  • 병렬처리 : divides and conquers, 다수의 프로세서로 여러 프로그램 또는 분할된 부분 동시 처리
  • 병렬처리를 위한 선결 조건 : 여러 프로세스가 하나의 시스템을 구성할 수 있도록 작고 빨라야함
    : 한 프로그램을 분할 가능해야 하며, 순차적 처리와 결과가 같아야함
  • 야기되는 새로운 문제들 : 문제 분할 / 프로세서간 통신
  • 필요한 관련 기술들
병렬 프로그램 언어와 컴파일러의 개발
상호 배타 메커니즘 지원
공유자원들에 대한 경합을 줄이고 이용률을 극대화할 수 있는 운영체제의 개발

8.2 병렬처리의 단위

  • 작업-단위 병렬성 : 독립적인 작업 프로그램 단위로 병렬처리
  • 태스크-단위 병렬성 : 큰 작업을 기능에 따라 분할 병렬처리(프로세서간 정보 교환 필요)
  • 스레드-단위 병렬성 : 스레드 단위로 병렬처리(자바등 프로세스)
  • 명령어-단위 병렬성 : 의존성이 없는 명령어를 병렬처리(궁극적 목표)

8.3 병렬컴퓨터의 분류

  • Flynn의 분류 : 구조적 특징에 따른 분류
명령어 스트림 : 명령어가 쭉 흘러 들어오는것
데이터 스트림 : 데이터가 쭉 흘러 들어오는것
SISD : 단일 명령어 스트림 - 단일 데이터 스트림 = 단일 프로세서 시스템(파이프라이닝, 슈퍼스칼라 이용)
SIMD : 단일 명령어 스트림 - 복수 데이터 스트림 = 배열 프로세서(GPU), 하나의 제어 유니트로 여러 프로세싱 유닛 통제
MISD : 복수 명령어 스트림 - 단일 데이터 스트림 = N개의 프로세서에 서로 다른 명령어 실행 -> 비현실적(백업 컴퓨터 필요할 때)
MIMD : 복수 명령어 스트림 - 복수 데이터 스트림 = N개의 프로세서가 서로 다른 명령, 서로 다른 데이터 처리
     : 밀결합 시스템 : 공유-기억장치 구조, 다중 프로세서 시스템
     : 소결합 시스템 : local memory를 가진 독립적인 컴퓨터 모듈, 프로세서간 메세지 전송 방식, 다중 컴퓨터
  • RISC : 하나의 명령어가 일을 적게하여 속도 향상, 싸서 사용함
  • CISC : 하나의 명령어가 복잡(low-level 명령어 다수결합), 옛날꺼 또는 x86 intel, 모토롤라, 애플
    : 다양한 요구 때문에 점점 명령어가 복잡해짐
  • Memory Access Model에 따른 분류
균일 기억장치 엑세스(UMA) : 프로세서가 네트워크를 통해 누구나 기억장치로 엑세스 할 수 있게함(소요시간동일)
장점 : 하드웨어/프로그래밍 간단 / 단점 : 공유 자원 경합이 높아져 시스템 크기의 한계가 있음

불균일 기억장치 엑세스(NUMA) : UMA여러개 연결, 건너건너 다양하게 엑세스 하게됨
무-원격 기억장치 엑세스(NORMA) : 프로세서가 기억장치에 직접 엑세스 할 수 없는 구조(UMA->UMA만 불가능)
                             : UMA - UMA는 local memory에서 간접적으로 전달

시스템 구성방법에 따른 분류

대칭적 다중프로세서(SMP) : 64개 이하 프로세서, 시스템내 모든 자원 공유, 하나의 OS, 대칭적(직접 OS코드 수행, 동등한 프로세서 권한)
대규모 병렬프로세서(MPP) : 무공유 구조기반 대규모 병렬처리, 간단한 구조의 노드 프로세서(수백수천개), 커널OS, 메세지 전달 통신
캐쉬-일관성 NUMA 시스템(CC-NUMA) : UMA 혹은 NUMA가 상호연결망에 접속, 모든 기억장치들이 전역 주소공간을 가지는 분산 공유-기억장치시스템
                                : S/W 변경없이 SMP보다 더 큰 시스템 구축 가능함
분산 시스템(DS) : 독립적(local memory) 노드들이 TCP/IP등을 통해 연결
클러스터 컴퓨터(CC) : PC or workstations를 고속 랜, switch로 단일 시스템 이미지로 통합
                   : 장점 : 저렴하게 병렬처리시스템 구축가능, 결함 대체 용이(가용성)

8.4 다중프로세서시스템 구조, MIMD 여러 프로세서가 비동기적으로 프로그램 실행

  • 기억장치 모듈을 사용하는(소유하는) 방식에 따른 분류
    공유-기억장치 시스템
밀결합 구조로 주기억장치를 모든 프로세서에 공유

버스, 크로스바 스위치(배열, 고성능 소자필요), 다단계 상호연결망(2진 XOR로 브로드 캐스팅)

장점 : 프로세서간 데이터 교환 메커니즘 필요X, 프로세서 이용률 극대화
단점 : 연결에 경합이 발생, 공유자원 사용순서 때문에 느려짐

분산-기억장치 시스템

소결합 구조
각 프로세서가 자신의 local memory를 소유
다른 프로세서들과의 통신은 메시지 전송 이용
장점 : 공유자원에 대한 경합 감소 / 단점 : 통신 프로토콜에 의한 지연 시간 증가

분산기억장치 시스템에서의 상호연결망 구성방법
1.linear array구조 : 노드 수만큼 직렬로 연결됨(버스 보다 동시성 높음) 
2.ring 구조 : 단방향 N-1, 양방향 N/2 -> 코달 원형 : 노드에 링크(degree)를 추가 연결(네트워크 지름이 줄어듬)
3.tree 구조 : N = (2^k-1)개의 노드들 접속 k=level, 네트워크 지름 = 2(k-1), fat-tree(트리 줄기 증가, 병목현상 제거)
4.mesh network : 스위칭(array) 구조 -> torus network(소자 끝과 끝을 연결)
5.hypercube network : 큐브형태로 노드 연결, XOR로 가야하는 노드를 구함

8.5 클러스터 컴퓨터

네트워크에 접속된 다수의 컴퓨터들을 통합하여 하나의 거대한 병렬 컴퓨팅 환경 구축

  • 개방형 클러스터 : 공공 네트워크로 노드를 접속하여 클러스터 외부 노출
-표준형이기 때문에 노드간 메시지 통신해야함
-다양한 통신 환경을 지원해야 하는 표준 프로토콜을 사용해야 하기 때문에, 통신 오버헤드가 상당히 ㅣ높다
-보안이 보장되지 못해 추가 보안 작업이 필요함
-국축하기 용이함(클러스터링을 위한 소프트웨어 탑재만 하면됨)
  • 폐쇄형 클러스터 : 사설 네트워크를 사용하여 노드 접속, 외부 사용자 차단
-기억장치, 디스크, 메시지등으로 통신가능
-표준 프로토콜을 사용하지 않아 통신 오버헤드가 매우 낮아지며 프로토콜을 각 시스템에 맞게 효과적으로 구현가능
-통신 보안이 어느정도 보장됨
-외부 트래픽 영향이 없어 통신 지연이 줄어듬
-구현비용이 비교적 많이 들고, 외부 통신망과 접속은 한 노드를 통해서만 가능함

단일 시스템 이미지(SSI)

운영체제가 달라도 여러 컴퓨터들을 상호 연결하여 통합된 자원으로 사용될 수 있는 사용자 환경
OS와 프로그래밍 환경(도구)/응용 프로그램 사이에 위치하는 미들웨어 계층에 의해 지원

미들웨어 S/W 하부구조

SSI 인프라 : 똑같은 시스템인것처럼 보여주어 통합적으로 엑세스 가능하도록 지원해주는 클러스터의 핵심기술
      이점 : 어떤 노드에서 실행되고 있는지 알 필요 없게 해줌, 특정 자원 위치 알 필요 없게 해줌(필요한 경우 지원)
           : 중앙집중식, 분산식 둘 다 사용가능, 컴퓨터관리 단순화, 어느 노드에서든 시스템 관리 및 시스템 프로그래밍 가능

SA 인프라 : 클러스터에 부분적 결함이 발생해도 클러스터 컴퓨터가 계속 프로그램들을 처리할 수 있도록 해주는 기능
         : 체크포인트: 결함 발생 전에 백업, 자동페일오버: 노드결함 발생하면 다른 노드가 대신수행
         : 페일백 : 노드 결함이 복구되면 원래 노드로 작업수행 복원

8.6 슈퍼스칼라 구조

  • Data hazards
  • Structural hazards
  • Branch(control) hazards

 

## Question

보조기억장치의 중첩 RAID방식이란?

 

동기식버스와 비동기식 버스의 차이점은?

 

병렬버스중재방식에서 좋은 우선순위 설정 방법은?

 

I/O 제어에서 DMA방식과 인터럽트 방식의 차이점은?

 

밀결합 구조란?

 

분산기억장치 시스템에서의 상호연결망 구성방법중 가장 네트워크 지름이 작은 것은?

 

개방형 클러스터 컴퓨터와 폐쇄형 클러스터 컴퓨터의 차이점은?

 

미들웨어 S/W에서 SSI/SA 인프라 사용의 이점은?

Comments