CAOS Flashcards
관련법칙
(무마 암프 요수 샤채 길광)
- 무어 (마이크로칩, 성능2배, 가격절반)
- 암달 (프로세서 병렬화 한계)
- 요르돈 (수확체증의 법칙)
- 샤논-하아틀리이 (채널용량, 잡음, C = W log2(1+S/N)
- 길더 (광섬유 대역폭, 12개월 마다 3배 증가)
논리회로
- 조합논리회로: 출력신호가 입력신호의 의해서만 결정 되는것
and, or, not과 같은 기본 논리소자의 조합으로만 만들어 진다.
ex> 가산기, 비교기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서, 코드컨버터 등 - 순차논리회로 : 출력신호가 입력신호뿐 아니라 이전상태의 논리값에 의해 결정되는 회로
플립플롭과 같은 기억소자를 포함한다.
ex> 레지스터, 카운터 등
cf) 동기식 순차논리회로와 비동기식 순차논리회로?
클록펄스의 유무에 따라결정된다. 클록펄스가 있으면 동기식, 비동기식은 클록펄스없이 입력타이밍에 의존한다.
부트로더
- 정의 : 운영체제 가동 프로그램
- 기능 : 시스템 초기화, 커널적재
- 종류 : GRUB(GNU), LILO(Linux), ARMBoot, BLOB(ARM), PMON(MIPS), u-Boot(ARM)
- 절차 : BIOS -> 1차(MBR/PBR) -> 2차(GRLDR, NTLDR) -> 커널
i-node
- 정의 : 유닉스 파일 데이터 블록 포인터
- 구조(모오타싸 다싱더트) : mode, owners, timestamps, size block count, direct blocks, single indirect(4MB), double indirect(4GB), triple indirect(4TB)
마이크로 커널
- 정의 : OS핵심기능만 커널에 구현
- 구성(프쓰메커슈) : Process, Thread, Memory, Communication, Supervisor
모놀리딕 커널
- 정의 : OS 주요기능 모두 제공
- 구성(디파네) : Device/File System/Network Manager
RTOS(RealTime OS)
- 키워드 : 다중프로그램, 실시간OS, 선점형, 우선순위, Hard/Soft/Firm RTOS, GPOS
- 정의 : 정해진 시간 내에 완벽한 처리, 다중 프로그래밍 기반 실시간 운영체제
- 조건 : 신뢰성, 예측가능성, 성능, 최적성, 확장성
- 유형 : Hard RTOS(경성), Soft RTOS(연성), Firm RTOS(준경성)
- 기술(멀프뮤프 스디콘세) : Multi Tasking, Preemptive Kernel(선점형), Mutual Exclusion, Priority Inversion/Inheritance, Scheduler, Dispatcher, Context Switch, Semaphore
Embedded System
- 정의 : 특정목적 수행 SW/System
- 특징 : HW, SW 동시설계, 소형, 실시간, 저전력
- 분류(실특소저) : 실시간 처리(경성, 연성), 특수목적(가정, 정보, 공장, 사무), 소형, 저전력
- 테스트 자동화 이슈 : Event Driven, Time Critical, Platform Diversity, Platform Stability, Development Envronment
- 테스트 자동화 도구 : 기능, 호스트, 타겟, 데이터, 품질, 인증
Embedded OS
- 기능 : 실시간 처리, 프로그램 스케줄링, 멀티 태스킹, 선점형 커널지원, 부팅지원, XIP(eXcute In Place), GUI, 통신
모바일 OS
- 정의 : 기본 OS 기능을 제공하고 서비스와 라이브러리를 포함하는 플랫폼 OS
- 기술 : 기본OS(커널, 미들웨어), 플랫폼OS(App Framework, UI Framework, Apps)
- 종류 : iOS, Android, Web OS, Tizen
Tiny OS
- 정의 : UC버클리 스마트 더스트 프로젝트, 상태머신 구조의 컴포넌트 및 이벤트 기반 센서 네트워크용 운영체제
- 특징(상컴저이 네피확) : 상태머신 구조, 컴포넌트 기반, 저전력, 이벤트 호출, nesC언어, FIFO, 확장성
- 구성(MASAC 힐할팔): Main(Kernel Scheduler), Application(User Components), Actuating, Sensing, Communication, HAA(HIL(Indenpendent), HAL(Abstraction), HPL(Presentation))
- 스케줄러 동작(루스이태) : Loop, Sleep, Event, Task
SQLLite
- 정의 : 어플리케이션 프로세스 영역 내부에 공존하는 임베디드 데이터베이스
- 구성(코코액백)(인커버 토파코 비패오 유테) : Core(Interface, SQL Command Processor, Virtual Machine), Compiler(Tokenizer, Paser, Code Generator), Backend(B-Tree, Pager, OS Interface), Accessories (Utilities, Test Code)
Virtual Memory
- 정의 : 보조기억장치 부분을 주기억장치 처럼 사용
- 관리정책 : 할당(고정, 가변), 호출(요구, 예상), 배치(First, Best, Worst),교환(FIFO, LRU, LFU, NUR)
- 구성 : Paging(고정분할, 내부단편화), Segmentation(가변분할, 외부단편화), Paged Segmentation(page(메모리), Segment(파일))
- 페이징 기법 : Direct(Page Table), Associative(Associative Buffer), Direct/Associative
- 페이지 교체 알고리즘 : 무작위, FIFO, Optimal, LFU(횟수), LRU(시간), NUR, MFU
- 문제점 : Demand Paging, Page Fault Trap, Thrashing
- 해결방안 : Locality Model, Working Set, Page Fault Frequency
FIFO Anomaly
- 개념 : 프레임 개수 추가, page fault 증가
- 현상 : locality 미고려 문제점 -> LRU고안
- 해결 : SCR (FIFO 단점 보완)
- SCR 개념 : 각 페이지마다 참조 비트, 0 인 경우 교체, 1인경우 0으로 지정 후 FIFO 리스트의 맨 마지막으로 피드백
MMU (Memory Management Unit)
- 개념 : 가상 메모리에서 주소 매핑, 논리적 주소를 물리적 주소로 변환하는 하드웨어
- 과정 : CPU에서 MMU에 가상 주소 전달 -> MMU는 TBB부터 Page Table 검색 -> Page Table 에서 물리주소 검출 -> 물리주소의 데이터 CPU에 전달
TLB(Translation Look-aside Buffer)
- 필요성 : 페이지 테이블 반입, 엑세스 데이터 반입 두번 엑세스 시간 단축
- 원리 : 시간 지역성, 연관 사상
- 동작 : TLB 우선검색, TLB Hit, TLB Miss, 메모리 접근
캐시 메모리
- 정의 : CPU와 주기억장치 사이에 위치한 소형 고속 메모리
- 특성 : 공간지역성, 시간지역성, 순차지역성
- 매핑기법 : Direct(블록분할), Full Associative (태그필드), Set Associative(라인분할)
- 쓰기정책 : Write Through(동시), Write Back(제거될 때)
- 캐시 일관성 문제 해결 : 공유 캐시 사용, 공유변수를 캐시에 저장하지 않기, 버스감시 매커니즘 사용, 디렉토리 기반 유지 기법 사용
캐시 플러시
- 개념 : 주메모리에서 데이터를 다시 읽어 들일 필요가 있을 경우 캐시를 비우는 동작
- 구성 : Flush (Cache reset, I-Cache/D-Cache 중 하나만 실행), Clean (Cache Write Back, D-Cache 에서만 동작)
Locality
- 정의 : 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성
- 종류 : 시간적(순환, 서브프로그램, LRU), 공간적(Array, Sequential Processing, Pre-fetch), 순차적
- 관리방법 : 기억장치 계층구조, 캐시 엑세스 시간, 워킹셋
- 사례 : Cache Memory, Virtual Memory, CDN
Thrashing
- 정의 : Multi Processing 기능을 갖춘 가상 시스템에서 페이지부재가 너무 많이 발생하여 프로세스 실행보다 페이지교체에 더 많은 시간을 소모하는 현상
- 원인 : 부적절한 페이지 교체 정책, 과단한 멀티 프로세싱 정책
- 발견방법 : Page Fault 조사, Swapping 조사
- 예방방법 : Working-Set(전이), Page-Fault Frequency(상한할당, 하한회수)
문맥교환(Context Switching)
- 개념 : 멀티 프로세스 환경에서 실행 중인 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 CPU에 적재하는 과정
- 관련용어 : Dispatching, Time Quantum, Preemption
- 절차 : 인터럽트 -> 모드전환(USER->OS) -> 기존 상태 PCB 저장 -> 신규 상태 PCB 로드 -> 다음 프로세스 실행 -> 모드전환(OS->USER)
- 발생시점 : 비자발적(타임 슬라이스 소진시, 인터럽트 발생시), 자발적(sleep, exit, wait)
- 오버헤드 발생 시점 : 인터럽트, 프로세스 스케줄링, 디스패치
- 오버헤드 해결 방안 : 다중 프로그래밍 정도 낮춤, 프로세스간 문맥교환 수행, 쓰레드 이용
CPU 스캐줄링
- 정의 : 언제, 어느 Process에 CPU를 할당할 것인지 결정하는 작업
- 특징 : 처리능력 최대화, 경과시간 최소화, 대기시간 최소화, 응답시간 최소화, CPU 이용율 극대화
- 종류 : Scheduling Queue, Job Scheduler(장기), Process Scheduler(중기), Read Scheduler(단기)
- 기법 : 선점(RR, SRTF, MLQ, MLFQ), 비선점(FCFS, SJF, Priority Queue)
Dispatcher
- 정의 : 프로세스 전환수행을 하는 운영체제내부모듈
- 기능 : 프로세스 공간의 전환 처리(switch_mm), 레지스터의 전환 처리(switch_to), 부동 소수점 연산 레지스터의 지연 전환 가능, 범용 레지스터의 백업, CPU 할당, 스케줄러에 의한 호출(선점)
Deadlock
- 정의 : 다중 프로그램 환경에서 두 개 이상의 프로세스가 아무리 기다려도 자원을 사용할 수 없는 무한 대기 상태
- Deadlock 관리 필요성 : 자원 낭비 방지, 성능 저하 방지, 사용자 불만 해소
- 발생원인 : 상호 배제, 점유와 대기, 비선점, 환영 대기
- 교착상태 예방 : 부정
- 교착상태 회피 : 제거
- 교착상태 발견 : 특정경우 -> 알고리즘 -> 발견 -> 회복
- 교착상태 회복 : 수동처리(process kill), 제거(abort)
- 교착상태 해결 위한 시스템 설계 : PCB/Buffer/Semaphore 자원 순서화, 주 기억 장치 선점(Paging/Segmentation/Swapping), 자원 필요량 산정, 교체 가능 공간 사전 할당
Banker 알고리즘
- 정의 : 감시와 제시, 교착 상태 회피 알고리즘
- 자료구조 : Available(사용가능), Max(최대 자원 요구), Allocation(할당 받음), Need(남은 자원)
- 동작원리
1) 현재 사용 가능한 리소스의 양을 구한다 (Available)
2) 추가 요구량을 구한다 (Request = Max - Available)
3) 추가 요구 자원이 현재 여유 자원보다 적은 프로세스 (i)를 찾는다
4) 수행 가능한 프로세스가 점유한 자원을 여쥬 자원으로 바꿈 (끝내고 반환한 경우로 가정) 한 후에 3번 부터 반복
상호배제 해결을 위한 소프트웨어와 하드웨어적 방안
- 소프트웨어적 방안 : 데커(공유변수, 차례설정), 피터슨(공유변수, 의사표시, 차례양보), 램포트(번호표 부여)
- 하드웨어적 방안 : 인터럽트 금지, Test & Set, Swap
세마포어
- 정의 : P와 V라는 2개의 연산에 의해 동기화를 유지시키며 상호 배제의 원리를 보장하는 기법
- 유형 : 이진, 계수
- 원리 : s가 1이면 접근가능, s가 0이면 접근불가
- 연상 : 초기화(s에 초기값 부여), P연산(Wait, s = s - 1), V연산(Signal, s = s + 1)
- 적용방법 : Busy waiting(while), Sleeping Queue(if)
세마포어(비교)
- 주체 : OS, 개발자 주체의 동시성 지원
- 상호작용 : 모니터에 이론적 기반 제공
- 특징 : s의 타입에 따라 Binary/Counting으로 구분
- 구현사례
Semaphores S;
P (s); // 검사 s–
임계구역()
V (s); //증가 s++ - 언어 : P, V 연산
- 공통점 : 동시성 지원
모니터(비교)
- 주체 : 프로그래밍 언어 수준의 동시성 지원
- 상호작용 : 세마포어의 단점인 타이밍 오류 해결 및 개발편의성 보완
- 특징 : 한 시점에 하나의 프로세스만 모니터 내부에서 수행
- 구현사례
Monitor monitor-name
{
//지역변수 선언
Public entry p1(…) { }
Public entry p2(…) { }
} - 언어 : JAVA의 synchronized Object, .NET의 모니터
Multi Threading
⦿ 정의 : CPU가 한번에 처리할 수 있는 작업 실행 단위가 1개가 아닌 여러개가 될 수 있는 기능 ⦿ 특징 : CPU 이용률 최대화, 대기/응답시간 최소화, 수행의 흐름을 분리, 예측불가, 동기화 ⦿ 종류 - Interleaved(Fine-grain) : Clock cycle - Blocked(Coarse-grain) : cache miss - Simultaneous (SMT) : Super scala - Chip : two-issue ⦿ 모델 - Many to one : 빠름, 간단, 병렬안됨 - One to one : 오버헤드, 병렬됨 - Many to Many : 진정한 동시성 ⦿ 장점 : Idel 시간 감소, 빠른 처리 결과, Cache 효율성 강화 ⦿ 단점 : 상호 방해, 오버헤드, 하드웨어 지원 필요
프로세스
- 정의 : 메모리에 로드 되어 CPU에 의해 실행되고 있는 실행 프로그램
- 특징 : PCB, Dispatch, Context Switching, 순차적 수행
- 상태
1) Ready (dispatch, suspend)
2) Running (timer runout, suspend, I/O wait or event wait)
3) Blocked (I/O completion or event completion, suspend)
4) Suspended Ready (resume)
5) Suspended blocked (I/O Completion or event completion, resume)
PCB (Process Control Block)
⦿ 정의 : 프로세스에 대한 중요 정보를 저장해 놓은 저장소 ⦿ PCB의 자료구조(상고부자 우메할 카레) - 프로세스의 현 상태 - 프로세스의 고유한 식별자 - 프로세스의 부모 프로세스에 대한 포인터 - 프로세스의 자식 프로세스에 대한 포인터 - 프로세스의 우선순위 - 프로세스가 위치한 메모리에 대한 포인터 - 할당된 자원에 대한 포인터 - 프로그램 카운터 - 중앙처리장치 레지스터
메모리 인터리빙
⦿ 키워드 : 상위/하위/혼합, C-Access, S-Access ⦿ 정의 : 메모리 접근시간을 최소화하기 위해 메모리를 복수개의 모듈로 나누고 각 모듈에 연속적인 주소를 부여하여 동시 접근이 가능하게 하는 기법 ⦿ 활용방식 - 상위 인터리빙 : 순차적 - 하위 인터리빙 : 연속적 - 혼합 인터리빙 : 뱅크(상위), 모듈(하위) ⦿ 엑세스 방식 - C-엑세스 : 순차적 도착 - S-엑세스 : 동시읽기, 순차전송
디스크 스케줄링
⦿ 키워드 : 탐색시간, 회전지연, FCFS, SSTF, SCAN, C-SCAN, Look, C-Look
⦿ 목적 : 디스크 접근시간 최적화, Throughput 최대화, 응답시간 최소화
⦿ 디스크 드라이브 구성 : Head, Track, Cylinder, Sector
⦿ I/O시간 : 탐색시간, 회전지연시간, 전송시간
⦿ 스케쥴링 알고리즘
- FCFS : 들어온 순서대로
- SSTF : 헤드 위치에서 가장 가까이 요청 된 것
- SCAN : 진행방향 상 가장 가까운 요청, 끝까지 진행
- C-SCAN : 한쪽 방향으로만 수행, 끝까지 진행
- LOOK : SCAN과 유사, 끝까지 않감
- C-LOOK : C-SCAN과 유사, 끝까지 않감
⦿ 효율성 비교
- 평균 Seek Time : SSTF -> SCAN -> C-SCAN -> FCFS
- 응답시간 편차 : FCFS -> C-SCAN -> SCAN -> SSTF
- Heavy Load : C-SCAN -> SCAN -> SSTF
인터럽트 (interrupt)
⦿ 키워드 : IRQ, IPR, ISR, 폴링, 데이지 체인, 벡터, 우선순위(전원이상, 기계착오 -> 외부신호 -> 입출력 -> 내부 검사 -> SW인터럽트
⦿ 정의 : CPU가 처리하던 프로그램을 중단하고 컴퓨터 제어를 특수사건이나 환경을 처리할 수 있도록 보내는 제어신호
⦿ 필요성 : CPU 처리 효율 향상, I/O 우선순위, 수행결과 저징 및 복구
⦿ 인터럽트 결정 방법
- 요청(IRQ), 처리(IPR), 서비스(ISR)
⦿ 인터럽트 종류
- 외부(전원이상, 기계착오, 외부신호, 입출력)
- 내부(프로그램검사, SVC 인터럽트)
⦿ 인터럽트 우선순위 체계
- SW(폴링), HW(직렬 우선순위(Daisy-Chain), 병렬 개별회선(Multiple-Interrupt))
⦿ 중첩 인터럽트 처리 : 우선순위, 순차처리
DMA(Direct Memory Access)
⦿ 정의 : CPU를 대신하여 I/O 장치와 주기억장치 사이의 데이터 전송을 담당하는 장치 ⦿ 목적 : CPU Utilization 향상, Multi Process 환경에서 유리, Process 응답시간 향상 ⦿ 동작원리 (CMDI) 1),2) Bus Request - I/O 장치 -> DMA Controller -> CPU 3),4) Bus Grant - CPU -> DMA Controller -> I/O 장치 5),6) Data transfer - I/O 장치 -> DMA Controller -> Main Memory 7) Interrup - DMA Controller -> CPU ⦿ 동작모드 - Burst Mode(Block) : 사이클 독점 - Cycle Stealing(Word) : CPU의 메모리 사이클 훔침 ⦿ DMA 외의 입출력 방식 : Programmed Driven I/O, interrupt Driven I/O, I/O 채널 프로세서
Memory Mapped I/O
⦿ 키워드 : 주소영역공유, Load, Stor
⦿ 정의 : 주소공간의 일부가 입출력 장치에 할당되어 그 주소로 읽거나 쓰는 것이 입출력 장치로 명령 하는 것으로 해석되어 입출력 하는 방식
⦿ 특징 : 쉬운 설계, 임베디드 프로세서 주로 사용, 이용효율 낮음
⦿ 주소영역 : 전체 = 1024, 상위 512 = 기억장치, 하위 512 = I/O 장치
⦿ 명령어 : Load, Stor)
⦿ 프로세서 : ARM, MIPS
I/O(Isolated) Mapped I/O
⦿ 키워드 : ⦿ 정의 : I/O Interface 번지와 메모리의 번지를 구별하여 지정하는 방법 ⦿ 특징 : 주소영역 전체 사용, PC환경 주로 사용, 이용효율 높음 ⦿ 주소영역 : 기억장치 = 1024, I/O 주소 = 1024 ⦿ 명령어 : IN, OUT ⦿ 프로세서 : x86계열
OS I/O Model의 유형
⦿ 유형 : Synchronous I/O(프로세스 Blocked), Asynchronous I/O(프로세스 Non-Blocked)
⦿ Synchronous I/O
- Blocked I/O : Initiate -> Complete, 프로세스 봉쇄
- Non-Blocked I/O : Check -> Complete, 바로 리턴
- I/O Multiplexing : Check -> ready/initiate -> Complete, 입출력 다중화
- Signal Driven I/O : notification /initiate -> Complete, 준비되면 시그널 발생
⦿ Asynchronous I/O : notification
Blocked I/O
⦿ 정의 : 커널에서 프로세스 버퍼로 복사될 때까지 대기하는 모델
⦿ 장점 : 시스템 자원 소모 적음, 적은 수의 작업 수행시 고성능, 이해하기 쉬운 직선적 코드진행
⦿ 단점 : 대기시간 지연, 많은 작업 수행시 디버그 어려움
⦿ 활용 : 접속한 클라이언트 하나씩 처리
Non-Blocked I/O
⦿ 정의 : 폴링하다 데이터가 도착하면 I/O를 수행하는 모델
⦿ 장점 : 멀티 스레드를 사용하지 않고 여러 입출력 처리
⦿ 단점 : 지속적 Polling으로 Busy-Waiting 초래, 시스템 효율 저하 및 복잡한 코드 진행
⦿ 활용 : 여러 클라이언트 병렬 처리
Von Neumann
⦿ 정의 : 단일저장장치(메모리)와 연산장치(ALU), 중앙처리장치(CPU(로 구성된 프로그램 내장형 구조 모델
⦿ 구조 : 데이터 메모리와 프로그램 메모리가 구분되어있지 않고 하나의 버스로 연결되어 구성
⦿ 프로세스 : 메모리 -> FI -> 메모리 -> DI -> 메모리 -> EI -> Store 순차 실행
⦿ 장점 : 공용 메모리 사용으로 상대적 구현 비용 저렴
⦿ 단점 : 파이프라이닝 기술 사용시 메모리 공유 문제 발생
⦿ 문제점 : CPU의 비효율적 활용, 주기억장치 병목현상 발생
⦿ 해결방안
- 병렬처리 : SMP, MPP
- 주기억장치 병목해결 : Cache Memory, Hyper transport
- Harvard 아키텍처 병행 사용 : Harvard(명령어 캐시와 데이터 캐시로 분리하는 경우), Von Neumann(Cache miss의 경우)
Harvard Architecture
⦿ 정의 : 명령용 버스와 데이터용 버스로 물리적으로 분할한 컴퓨터 아키텍처
⦿ 특징 : 메모리로 부터 명령어와 데이터 동시에 사용, 향상된 속도, Fetch->Decode->Execute->Store 병렬처리, Stored Program
⦿ 프로세스
- 명령어 메모리 -> FI
- Store -> 데이터 메모리
⦿ 장점 : 파이프라이닝 기술 사용을 위한 최적의 환경 제공
⦿ 단점 : 별도 메모리 사용, 구현비용 증가, 회로 구조 복잡
Stored-Program computer
⦿ 정의 : 프로그램이 메모리에 저장되는 구조로 명령어가 메모리 저장상태에서 CPU 해석 후 연산이 진행되는 컴퓨터 ⦿ 동작절차 1) 사전준비 : 코딩, 컴파일 2) 실행 : 명령어와 데이터 모두 메인메모리에 로드 3) Fetch : CPU내의 CU가 PC 값을 이용해 메인메모리의 명령어를 읽어옴 4) Decode : 읽어온 명령어 해독 뒤 PU(ALU)에게 명령 지시 5) Execution : ALU가 명령실행 6) Write Back : 연산결과 저장, 결과를 메인 메모리에 다시씀
병렬컴퓨터
⦿ 정의 : 여러 개의 프로세서들이 하나 이상의 작업을 분할하여 동시에 다수의 프로세스를 처리하는 컴퓨터
⦿ 병렬처리의 유형
1) 병렬처리 단위에 따른 병렬성 수준
- 명령어 수준(ILP) : 1개 이상 명령어 1사이클 실행 (코드, 명령어)
- 데이터 수준(DLP) : 루프, 서로 다른 Data로 동일 Task 연산
- 작업 수준(TLP) : 기능적 분해
2) 상호 작용 크기에 따른 병렬성 유형
- Fine-grained(ILP) : 프로세스간 빈번한 데이터 교환
- Coarse-grained(DLP) : 벡터/메트릭스 등 대용량 작업
- Embarrassingly parallel(TLP) : 초대형 시스템
Flynn의 분류
⦿ Flynn의 병렬 하드웨어 아키텍처
- SISD : 1회 1개 명령어 데이터 처리
- SIMD : 다수 데이터, 1개 명령어
- MISD : 1개 데이터 다수 명령어
- MIMD : 다수 프로세서/데이터
MIMD 병렬 아키텍처 분류
⦿ 기억장치 엑세스 모델에 따른 분류
- 균일 기억장치 액세스 (UMA : Uniform Memory Access)
- 불균일 기억장치 액세스 (NUMA : Non-uniform Memory Access)
- 캐쉬-온리 기억장치 액세스 (COMA : Cache Only Memory Access)
- 무-원격 기억장치 액세스 (NORMA : No Remote Memory Access)
⦿ 시스템 구성에 따른 분류
- 대칭적 다중 프로세서 (SMP : Symmetric Multi Processor)
- 대규모 병렬 프로세서 (MPP : Massively Parallel Processor)
- 캐쉬-일관성 NUMA (CC-NUMA : Cache-Coherent NUMA)
- 분산 시스템 (Distributed System)
- 클러스터 컴퓨터 (Cluster Computer)
균일 기억장치 액세스 (UMA : Uniform Memory Access)
- 공유 메모리 사용 병렬처리
- 프로세서 증가 시 병목현상 발생
불균일 기억장치 액세스 (NUMA : Non-uniform Memory Access)
- 다수의 UMA를 상호 연결망으로 구성
- 분산 메모리 공유 구조(병목현상 감소)
캐쉬-온리 기억장치 액세스 (COMA : Cache Only Memory Access)
- 주기억 장치 없음
- Cache 간 연계하여 공통 기억장치 구성
무-원격 기억장치 액세스 (NORMA : No Remote Memory Access)
- 프로세서가 다른 원격 기억장치에 직접 접근불가
- 프로세스간 Message Passing 방식으로 데이터 교환
대칭적 다중 프로세서 (SMP : Symmetric Multi Processor)
- 강결합 방식 공유 메모리 구조
- 2~64 개의 프로세스로 구성 (중대형급)
대규모 병렬 프로세서 (MPP : Massively Parallel Processor)
- 약결합 방식 분산 메모리 구조
- Message Passing 방식으로 데이터 교환
캐쉬-일관성 NUMA (CC-NUMA : Cache-Coherent NUMA)
- COMA의 캐시 일관성 문제 해결을 위해 SMP를 상호연결망으로 연계
- 공유-분산 기억장치 시스템 구성
분산 시스템/클러스터 컴퓨터 (Distributed System/Cluster Computer)
- 분산 시스템 : 상호 연결망을 Ethernet(IEEE 802.3)으로 구성
- 클러스터 컴퓨터 : 상호 연결망을 SAN으로 구성
- 초고성능 분산/병렬처리 컴퓨팅
In Memory Computing
⦿ 정의 : 수 TB의 데이터를 스토리지가 아닌 메인 메모리 상에 상주시키는 컴퓨팅 시스템
⦿ 구성요소
1) Memory-Intensive Computing Platform : DRAM, Flash, SSD, Multicore, InfiniBand, Clusters, Grid, Cloud)
2) In-Memory Data Management : In-Memory DBMS, In-Memory Data Grid
3) High Performance Message Infrastructure
4) In-Memory Application Platforms : In-Memory Analytics Platforms, Complex Event Processing, In-Memory Application Server
5) In-Memory-Enabled Applications
타임서버
⦿ 정의 : 표준시각을 유지하고 인터넷이나 사내 네트워크에 TP(Time Protocol), NTP(Network Time Protocol) 등의 신호를 제공하는 서버 ⦿ 특징 - 계층구조 : 0~15계층, 동일계층/1단계 상위 계층과 직접 통신 - 상호참조 : 3개이상 상위, 2개이상 동일 계층 참조 - 낮은부하 : 작은 패킷 ⦿ 필요성 - 시스템 관리 측면 : 로그 서비스, 메시지 관리, 파일 서비스, 작업 예약 - 보안 측면 : 포렌식/감사, 인증, 메시지 위조 대응, CCTV - 비즈니스 측면 : 산업/연구, 통신, 교통, 금융 ⦿ 고려사항 - 기능측면 : 정확성, 신뢰성, 인터페이스 - 운영측면 : 보안성, 경제성, 유지보수성
Watchdoc Timer
⦿ 정의 : 프로그램이 의도치 않게 무한루프에 갇히거나 비정상 상황 등 오류상황 회피를 위한 전자 타이머
⦿ 종류 : 단단계, 다단계, 소프트웨어
⦿ 절차 :
- Watchdoc Timer는 정해진 임의의 값부터 카운트 다운을 시작하고 그 값이 “0”에 도달하면 CPU Reset 으로 문제 해결
- 시스템은 원하지 않는 Reset 을 피하기 위해 주기적으로 kicking을 시도하여 타이머의 값을 설정된 원래의 값으로 되돌려 놓음
Multi-Core Processor
▣ 정의 - CPU 내부에서 연산 및 처리를 담당하는 실질적인 코어가 2개 이상인 제품 - 기존 코어 1개만을 탑재한 싱글 코어 CPU보다 더 뛰어난 성능을 제공하는 기술 ▣ 등장 배경 - 무어의 법칙의 한계 - 발열문제의 해결방안 필요 - 속도 향상에 대한 요구 ▣ 기반 구조 분류 1) SMP(Symmetric Multi-Processing) - 동종이 코어들을 결합하며 메모리 공유 통한 성능향상 - CPU의 전체적인 성능 향상 2) AMP(Asymmetric Multi-Processing) - 이종의 코어들을 결합하며 CPU의 용도별 부분 최적화에 유리 - 프로그래밍의 복잡성이 상대적으로 높음 ▣ 아키텍처의 모델 유형 1) General Execution Core Model - CPU Core & L1 Cache x2, Bus I/F & L2 Cache - 두 개 이상의 일반화된 실행 코어 - PC혹은 서버, 코어 수 확장 용이 2) General Core & Dedicated DSPs Model - CPU Core, DSP, Bus I/F - 하나의 실행 코어와 장치 특성에 맞는 가속기(DSP) 코어 - 모바일 용도, 성능 극대화 3) Hybrid Model - CPU Core & L1 Cache x2, DSP, Bus I/F - 모델1과 모델2의 하이브리드 - 두 개 이상의 실행 코어와 장치 특성에 맞는 DSP 탑제 형태 ▣ 멀티코어 어플리케이션 최적화 위한 프로그래밍 방법 1) 프로그래밍 모델 - 멀티 프로세스 - 멀티 쓰레드 - 공유메모리 통신 - 메시지 전달 2) 병렬 프로그래밍 언어 - OpenMP : 일종의 API - MPI : 병렬 통신 프로토콜 - Cilk++ : C++의 확장 버전 - OpenCL : 멀티쓰레딩 API - CUDA (Common Unified Device Architecture) : nVIDIA GPU 운영 3) Thread 관리도구 - Thread Building Blocks : Call base Threading 프로그램 작성 지원 - Thread Profile : 쓰레드간 병목 지점 탐색 도구, 성능 최적화 - Thread Checker : Data Race 및 Dead Lock 발견 도구 ▣ 멀티코어 SW 개발 난점 - 개발 복잡도 증가 : 멀티스레딩 - 디버깅 복잡도 증가 : 병렬 교착 - 병렬화 예측불가 : 하이젠버그 ▣ SW 개발 고려사항 1) 관리자 관점 - 안정화/최적화 Trade-off - Top-down 방식 최적화 - 80:20 법칙 2) 개발자 관점 - App 특성 분석 : 중점(CPU, IO, Network) - Metric & Measure : 성능평가 및 최적화 - 품질과 성능 : 품질 개선 활동, 최적화 활동 구분
IPMI (Intelligent Platform Management Interface)
▣ 정의
- 운영체제와 독립적으로 원격지나 로컬시스템의 상태를 지능적으로 모니터링 하고 제어 및 복구 등을 수행할 수 있는 기능을 제공하는 플랫폼 관리 표준 인터페이스
▣ 특징
- 버전 : 1.5 와 2.0 존재, 2.0에서는 VLAN 지원 및 통신 암호화 기능 제공
- 제어 : 634 UDP Port 사용하여 OpenIPMI, ILO, DRAC 등 원격 제어
▣ 주요기능
- 시스템 모니터링 및 경고 : 시스템 온도, 전압, 팬, 전원 공급장치, 새시 침입 등 상태 모니터링 및 원격복구
- 원격 전원관리 : 전원 ON/OF
- 이벤트 로그 : 센서정보, 시스템 로그
- WatchDoc Timer : 시스템 초기화 및 복구
▣ 구성요소 (제메통)
1) 제어
- BMC(Baseboard Mngt Controller) : 시스템 관리 소프트웨 어 및 하드웨어 플랫폼 사이의 인터페이스 관리
- IPMB(Intelligent Platform Mngt Bus) : IPMI 요청 메시지 수락 버스
- ICMB(Intelligent Classic Mnag Bus) : 섀시 간 통신 및 제어 표준 I/F
2) 메모리영역
- SEL(System Event Log) : CPU failure에 대한 System Event Log 관리
- SDR(Sensor Data Record) : 센서 타입 및 개수 정보 관리
- FRU(Field Replaceable Unit) : 시스템 내 다양한 모듈에 대한 정보
3) 통신 인터페이스
- System Interface : KCS (Keyboard Controller Style), SMIC(System Mngt I/F Chip), BT(Block Transfer), SSIF(SMBus System I/F)
- Serial I/F : Basic Mode, PPP Mode, Terminal Mode
- LAN Interface : UDP Datagram 기반의 RMCP 프로토콜
- RMCP(Remote Mngt Control Protocol) : IPMI Over LAN
▣ 주요명령어
1) Option
-I Interface
-H Hostname
-p Port
-U Username
-P Password
2) Command
- chassis : 섀시 파워, 전원상태
- power : 전원 컨트롤
- sdr : 메인보드 센서저보
- fru : 메모리, 메인보드 정보
- sel : 메인보드 event 로그
- user : 유저생성, 권한부여
I2C (Inter Integrated Circuit)
▣ 정의 - 2Line(SDA, SCL) 직렬 동기방식의 Serial Bus로서 여러 하드웨어를 연결하고 독립적으로 흐름을 제어하는 회로 디자인을 간단히 하기 위해 필립스에 의해 개발된 기술 ▣ 특징 - 양방향성 2-Wire : SDA(Serial Data), SCL(Serial CLock)을 통해 흐름 제어 - Master-Slave 구조 : Data전송의 주도권에 따른 구조 - 데이터 충돌 방지 : 반이중(half duplex) 동시 양방향 통신 불가 - 8bit Data 통신 : 100kbps, 400kbps, 3.4Mbps 통신 모드 지원 - 전압Level 통합연결 : 다양한 입출력 전압 IC간 연결가능 ▣ 구성도 - Device 1, Device 2, Device n, R1, R2 - SDA - SCL = 7bit로 구성된 주소값으로 이론산 128개 까지 연결 가능하나 bus의 capacitance을 고려하여 구성 = Master는 SCL로 동기를 위한 클럭을 출력하고 Slave는 SCL로 출력되는 클럭에 맞춰 SDA로 데이터 출력 또는 입력을 받음 ▣ 패킷형식에 따른 구분 (기송패) (마슬트리 주데) 1) 기능 - Master : I2C Bus 초기화 및 SCL에 clock 출력요청 - Slave : 마스터가 호출 2) 송/수신 - Transmitter : I2C-bus에 data 전송상태 - Receiver : I2C-bus에서 data 수신상태 3) 패킷형식 - 주소패킷 : Slave address(7bit), R/W(1bit), ACK(1bit) - Slave address 비트, Master 읽기/쓰기동작, Slave장치 응답여부 - 데이터패킷 : Data(8bit), ACK(1bit) - 데이터 비트 및 수신여부 ACK비트 구성 ▣ I2C-bus 통신과정 1) Bus Release Status - 명령 대기 상태 2) Master 시작신호 발생 - Master에서 Send to Start 신호를 방송하는 방식 - Start 신호를 받은 device 응답 - Master가 보낸 주소 신호가 자신인지 판단 3) Slave ACK 신호 응답 - Slave에서 ACK신호를 Master로 전송 4) 데이터 전송 - Master에서 Slave로 데이터 전송 5) 정지 - 데이터 전송 완료 후 Bus Release Status로 전환
CISC(Complex Instruction Set Computer)
▣ 등장배경 - CPU 처리속도의 향상 - 고급언어의 등장 ▣ 개념 - 단순한 명령어 처리에서 복합적인 명령 수행까지 하나의 명령집합으로 실행할 수 있도록 여러 개 명령어를 가진 프로세서 구조 ▣ 명령어 집합 구조 1Byte OP-CODE 2Byte OPERAND 3Byte OP-CODE OPERAND 4Byte OP-CODE OPERAND = 필요한 정보만 명령어로 저장(가변길이)하므로 낭비되는 코드를 줄일 수 있으며 이에 따라 프로그램 크기도 작아짐 ▣ 주요 특징 - 가변길이 명령어 사용 - 하나의 명령어가 복잡한 기능 수행 - 별도의 명령어 구현이 가능
RISC(Reduced Instruction Set Computer)
▣ 등장배경 - 명령어 세트의 비효율적 사용빈도 - CISC의 가변길이에 따른 파이프라인 적용 어려움 ▣ 개념 - 명령어 수와 주소지정 방식을 최소화하여 제어장치의 구조를 간단하게 구성한 프로세서 구조 ▣ 명령어 집합 구조 - OP-CODE, OPERAND1, OPERAND2 (32Bit 고정) = 32비트의 고정된 동일한 크기로써 파이프라인 적용이 가능 ▣ 주요 특징 - 고정길이 명령어 사용 - 하나의 명령어가 단순한 기능 수행 - 유사한 명령어 통합
EISC(Extensible Instruction Set Computer)
▣ 등장배경
- 고정길이에 따른 Operand의 확장 어려움
- RISC의 호환성 문제 대두
▣ 개념
- 오퍼랜드 부분을 OP코드와 독립적으로 구성하여 OP코드가 필요로 하는 길이만큼 오퍼랜드를 확장하도록 하는 명령어 구조
▣ 명령어 집합 구조
- OP-CODE, OPERAND1, OPERAND2 (16비트)
- 확장플래그 OP-CODE, OPERAND1, OPERAND2 (16비트)
= 확장 명령어는 확장 레지스터의 값에 새로운 값을 추가해 새로운 확장 데이터를 확장 레지스터에 넣고 확장 플래그를 활성화 시킴으로 필요한 크기의 오퍼랜드를 만듦
▣ 주요 특징
- 높은 코드 밀도 : 필요한 만큼 오퍼랜드 확장 방식
- 효율적인 마이크로프로세서 아키텍처 : 16/32/64비트 모두에서 효율적
- 저전력 : 높은 코드 밀도
CISC (비교)
▣ 주요특징 - 복합 명령어 구조 - 하드웨어 복잡 ▣ CPU Instruction - 명령어 개수가 많음 - 길이가 다양하며 실행 사이클도 명령어 마다 다름 ▣ 회로구성 - 복잡 ▣ 메모리사용 - 높은 밀도 메모리 사용 (메모리 사용이 효율적) ▣ 프로그램 코드 사이즈 - Small(130~140) ▣ 프로그램 측면 - 명령어를 적게 사용 ▣ 컴파일러 - 다양한 명령을 사용하므로 컴파일러가 복잡해짐
파이프라인 해저드
▣ 프로그램 수행 향상 방법 1) CPI (Clock Per Instruction)의 감소 - 파이프라인, 슈퍼스칼라, 파이프라인드 슈퍼스칼라, VLIW 통한 병행성/병렬성 향상 2) 명령어 수 감소 - 내부 아키텍처 특성 고려한 프로그래밍, 고성능 컴파일러 이용 최적화 3) Clock cycle time 감소 - Clock rate 상승, 오버클럭킹 ▣ 파이프라인의 개념 - 명령어를 실행하는데 사용되는 하드웨어를 여러 개의 독립적인 단계들로 분할하고, 그들로 하여금 동시에 서로 다른 명령어들을 처리하도록 함으로써 CPU의 성능을 높여주는 기술 ▣ 명령어 수행과정 1) FI(Fetch) 인출 - 명령어를 기억장치로부터 인출 2) DI(Decode) 해독 - 인출된 명령어를 해석 3) EI(Execute) 실행 - 해석된 결과를 수행 4) WB(Write Back) 저장 - 수행된 결과를 저장 ▣ 명령어 병렬화 기법 1) 단일 Pipeline (단일중첩) - 명령어 수행과정에서 각 단계를 한번만 중첩 - 다수의 동작을 동시에 수행하는 병렬처리 기술 2) Super Pipeline (엇갈림) - 하드웨어 장치의 연속 사용 위해, 몇 가지 동작을 명령 수행과정에서 각 단계에 엇갈리게 중첩하는 기술 3) Super Scalar (2중 중첩) - 프로세서 내에 Pipeline 된 ALU를 여러 개 포함. - 매 사이클마다 다수의 명령어들이 동시에 실행하는 병렬처리 기술 4) Super Pipelined Super Scalar (2중 중첩 엇갈림) - 슈퍼스칼라 기법에 슈퍼 파이프라이닝 기법 적용 5) VLIW (Very Long Instruction Word) - 동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출, 하나의 명령어로 압축, 수행하는 병렬처리 기술 ▣ 처리속도향상 = (순차실행시간/파이프라인 소요시간) = n*k/(n+(k-1)) (n : 명령어수, k : 파이프라인 단계 수) ▣ 파이프라인 효율성 저하 원인, 해저드의 개념 - 구조적 해저드 - 데이터 해저드 - 제어 해저드 ▣ 구조적 해저드 1) 개념 - 하드웨어적 제한으로 인해 동일 클럭사이클에 명령어들을 병렬적으로 수행하지 못하여 발생하는 해저드 2) 원인 - 각각의 다른 명령어가 동일 메모리, 동일 레지스터, ALU 등을 동시에 접근하려 할 때 후속 명령어가 지연됨 ▣ 데이터 해저드 개념 1) RAR (Read After Read) - R1 ← "R2" + R3 - R4 ← "R2" + R5 = 해저드 발생하지 않음 2) RAW(Read After Write) - "R1" ← R2 + R3 - R5 ← "R1" + R4 = True 해저드, 연산 결과, 연산 결과보다도 Read 필요시간이 빠름. 파이프라인, 슈퍼스칼라 구조에서 발생. Forwarding(Bypassing)으로 해결 3) WAR(Write After Read) - R3 ← "R1" + R2 - "R1" ← R4 + R5 = False 해저드, 실제 Static 형태의 파이프라인 구조에서는 발생하지 않는 형태이나, Dynamic 형태의 Pipeline의 경우 명령어 순서가 바뀌면서 Dependency 발생 할 수 있음. Register Renaming 으로 해결 4) WAW(Write After Write) - "R1" ← R2 + R3 - "R1" ← R4 + R5 = True 해저드, 동일한 레지스터에 쓰기를 시도하는 경우 발생, 파이프라인 구조에서는 발생하지 않으나 슈퍼스칼라 구조의 다중 파이프라인 구조에서 발생. Renaming으로 해결하거나, Temporary Register 사용으로 회피 가능. ▣ 제어 해저드 1) 개념 - 명령어의 실행 순서를 변경하는 명령어들 (Branch, Jump)에 의해 발생되는 해저드 2) 개념도 - Instruction i : IF, D, EX, M W - Instruction i+1 : IF, stall, stall, IF, D, EX, M, W - Instruction i+2 : stall, stall, stall, IF, D, EX, M, W 3) 사례 - beq rs, rt, label : 래지스터 rs와 rt가 같으면 변위에 의해 지정된 명령어 만큼 조건 분기함. rs와 rt가 동일한지 비교하고, 분기할 경우 직후의 명령어는 stall이 발생하고, 분기하지 않을 경우 그대로 수행함 ▣ 구조적 해저드 해결방안 1) Adder 추가 - Instruction Fetch 단계의 PC값 증가는 간단한 ALU내의 Adder가 아닌 별도의 Adder 추가를 통해 해결 2) Memory 추가 - Instruction Fetch 단계와 Memory Access 단계의 메모리 접근 충돌은 별도의 Cache 메모리를 두어 해결 - Instruction/Data용 L1 Cache와 전용 버스를 통한 해결 3) 레지스터 사용 - Instruction Decode와 Write Back 단계의 레지스터 접근 충돌은 시분할 Read/Write접근, 또는 멀티 포트 레지스터 사용으로 해결 4) 전용 연산기 추가 - 곱셈기, 나눗셈기, Barrel Shifter 등 ALU에서 다수의 작업이 필요한 연산에 대해 별도의 연산장치 추가를 통한 해결 = 근본적인 방법은 Resource의 제약사항 극복을 위한 추가적인 HW 및 버스확장 등 으로 해결 ▣ 데이터 해저드 해결방안 1) Bypassing (Forwarding) - ALU의 출력에 MUX를 추가하여 출력값을 그대로 다음 파이프라인의 ALU연산 입력으로 사용하도록 Bypassing 시킴 2) 명령어 재배치 (컴파일러) - 프로그램의 전체적인 명령어의 순서에 상관이 없으나, Data Dependency가 존재할 경우 실행 순서를 변경시킴 3) Register Renaming - 사용하는 레지스터의 이름을 변경하여 데이터 의존성 해결 4) Interlocking/NOP - 인위적으로 Rollback을 하거나 파이프라인 중단을 막기 위해 하위 파이프라인 실행을 중단시키거나, NOP(No Operation) 명령어를 추가하여 해저드를 회피함 ▣ 제어 해저드 해결방안 1) Predict-Not-Taken - Branch 명령어 뒤에 Delay Slot을 추가하여 무조건 실행함 - Branch 가 발생하지 않을 경우 파이프라인 실행 손실 없음 - Branch 가 실행될 경우 Delay Slot의 Flush 발생 2) Branch Target Buffer - 분기 예측의 과거 History에 따라 결정 - 2bit 이력에 기반한 분기 예측 - 4개의 상태를 유지해서 다음의 성공확률을 높이려고 시도 3) Software Pipelining - for/while 구문에 효과적임 - 반복적으로 수행하는 명령어들을 풀어서 수행함
파이프라인 해저드
▣ 프로그램 수행 향상 방법 1) CPI (Clock Per Instruction)의 감소 - 파이프라인, 슈퍼스칼라, 파이프라인드 슈퍼스칼라, VLIW 통한 병행성/병렬성 향상 2) 명령어 수 감소 - 내부 아키텍처 특성 고려한 프로그래밍, 고성능 컴파일러 이용 최적화 3) Clock cycle time 감소 - Clock rate 상승, 오버클럭킹 ▣ 파이프라인의 개념 - 명령어를 실행하는데 사용되는 하드웨어를 여러 개의 독립적인 단계들로 분할하고, 그들로 하여금 동시에 서로 다른 명령어들을 처리하도록 함으로써 CPU의 성능을 높여주는 기술 ▣ 명령어 수행과정 1) FI(Fetch) 인출 - 명령어를 기억장치로부터 인출 2) DI(Decode) 해독 - 인출된 명령어를 해석 3) EI(Execute) 실행 - 해석된 결과를 수행 4) WB(Write Back) 저장 - 수행된 결과를 저장 ▣ 명령어 병렬화 기법 1) 단일 Pipeline (단일중첩) - 명령어 수행과정에서 각 단계를 한번만 중첩 - 다수의 동작을 동시에 수행하는 병렬처리 기술 2) Super Pipeline (엇갈림) - 하드웨어 장치의 연속 사용 위해, 몇 가지 동작을 명령 수행과정에서 각 단계에 엇갈리게 중첩하는 기술 3) Super Scalar (2중 중첩) - 프로세서 내에 Pipeline 된 ALU를 여러 개 포함. - 매 사이클마다 다수의 명령어들이 동시에 실행하는 병렬처리 기술 4) Super Pipelined Super Scalar (2중 중첩 엇갈림) - 슈퍼스칼라 기법에 슈퍼 파이프라이닝 기법 적용 5) VLIW (Very Long Instruction Word) - 동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출, 하나의 명령어로 압축, 수행하는 병렬처리 기술 ▣ 처리속도향상 = (순차실행시간/파이프라인 소요시간) = n*k/(n+(k-1)) (n : 명령어수, k : 파이프라인 단계 수) ▣ 파이프라인 효율성 저하 원인, 해저드의 개념 - 구조적 해저드 - 데이터 해저드 - 제어 해저드 ▣ 구조적 해저드 1) 개념 - 하드웨어적 제한으로 인해 동일 클럭사이클에 명령어들을 병렬적으로 수행하지 못하여 발생하는 해저드 2) 원인 - 각각의 다른 명령어가 동일 메모리, 동일 레지스터, ALU 등을 동시에 접근하려 할 때 후속 명령어가 지연됨 ▣ 데이터 해저드 개념 1) RAR (Read After Read) - R1 ← "R2" + R3 - R4 ← "R2" + R5 = 해저드 발생하지 않음 2) RAW(Read After Write) - "R1" ← R2 + R3 - R5 ← "R1" + R4 = True 해저드, 연산 결과, 연산 결과보다도 Read 필요시간이 빠름. 파이프라인, 슈퍼스칼라 구조에서 발생. Forwarding(Bypassing)으로 해결 3) WAR(Write After Read) - R3 ← "R1" + R2 - "R1" ← R4 + R5 = False 해저드, 실제 Static 형태의 파이프라인 구조에서는 발생하지 않는 형태이나, Dynamic 형태의 Pipeline의 경우 명령어 순서가 바뀌면서 Dependency 발생 할 수 있음. Register Renaming 으로 해결 4) WAW(Write After Write) - "R1" ← R2 + R3 - "R1" ← R4 + R5 = True 해저드, 동일한 레지스터에 쓰기를 시도하는 경우 발생, 파이프라인 구조에서는 발생하지 않으나 슈퍼스칼라 구조의 다중 파이프라인 구조에서 발생. Renaming으로 해결하거나, Temporary Register 사용으로 회피 가능. ▣ 제어 해저드 1) 개념 - 명령어의 실행 순서를 변경하는 명령어들 (Branch, Jump)에 의해 발생되는 해저드 2) 개념도 - Instruction i : IF, D, EX, M W - Instruction i+1 : IF, stall, stall, IF, D, EX, M, W - Instruction i+2 : stall, stall, stall, IF, D, EX, M, W 3) 사례 - beq rs, rt, label : 래지스터 rs와 rt가 같으면 변위에 의해 지정된 명령어 만큼 조건 분기함. rs와 rt가 동일한지 비교하고, 분기할 경우 직후의 명령어는 stall이 발생하고, 분기하지 않을 경우 그대로 수행함 ▣ 구조적 해저드 해결방안 1) Adder 추가 - Instruction Fetch 단계의 PC값 증가는 간단한 ALU내의 Adder가 아닌 별도의 Adder 추가를 통해 해결 2) Memory 추가 - Instruction Fetch 단계와 Memory Access 단계의 메모리 접근 충돌은 별도의 Cache 메모리를 두어 해결 - Instruction/Data용 L1 Cache와 전용 버스를 통한 해결 3) 레지스터 사용 - Instruction Decode와 Write Back 단계의 레지스터 접근 충돌은 시분할 Read/Write접근, 또는 멀티 포트 레지스터 사용으로 해결 4) 전용 연산기 추가 - 곱셈기, 나눗셈기, Barrel Shifter 등 ALU에서 다수의 작업이 필요한 연산에 대해 별도의 연산장치 추가를 통한 해결 = 근본적인 방법은 Resource의 제약사항 극복을 위한 추가적인 HW 및 버스확장 등 으로 해결 ▣ 데이터 해저드 해결방안 1) Bypassing (Forwarding) - ALU의 출력에 MUX를 추가하여 출력값을 그대로 다음 파이프라인의 ALU연산 입력으로 사용하도록 Bypassing 시킴 2) 명령어 재배치 (컴파일러) - 프로그램의 전체적인 명령어의 순서에 상관이 없으나, Data Dependency가 존재할 경우 실행 순서를 변경시킴 3) Register Renaming - 사용하는 레지스터의 이름을 변경하여 데이터 의존성 해결 4) Interlocking/NOP - 인위적으로 Rollback을 하거나 파이프라인 중단을 막기 위해 하위 파이프라인 실행을 중단시키거나, NOP(No Operation) 명령어를 추가하여 해저드를 회피함 ▣ 제어 해저드 해결방안 1) Predict-Not-Taken - Branch 명령어 뒤에 Delay Slot을 추가하여 무조건 실행함 - Branch 가 발생하지 않을 경우 파이프라인 실행 손실 없음 - Branch 가 실행될 경우 Delay Slot의 Flush 발생 2) Branch Target Buffer - 분기 예측의 과거 History에 따라 결정 - 2bit 이력에 기반한 분기 예측 - 4개의 상태를 유지해서 다음의 성공확률을 높이려고 시도 3) Software Pipelining - for/while 구문에 효과적임 - 반복적으로 수행하는 명령어들을 풀어서 수행함
RISC (비교)
▣ 주요특징 - 32비트 고정된 명령어 구조 - 하드웨어 간단 ▣ CPU Instruction - 명령어 길이는 고정적 - 워드와 데이터 버스 크기 모두 동일 - 실행 사이클도 모두 동일 ▣ 회로구성 - 단순 ▣ 메모리사용 - 낮은 밀도 명령어 사용 (메모리 사용이 비효율) ▣ 프로그램 코드 사이즈 - Large(160~180) ▣ 프로그램 측면 - 상대적 많은 명령어 필요 - 파이프라인 사용 ▣ 컴파일러 - 명령어 개수가 적어서 단순한 컴파일러 구현 가능
CISC(비교2)
▣ 개념 - 단순명령에서 복잡한 명령까지 하나의 명령집합으로 처리하는 구조 방식 ▣ 특징 - 마이크로 프로그램의 제어자 단일 캐시를 갖음 ▣ 구조 - 제어장치, 명령/데이타 경로, 캐시, 메인메모리 ▣ 구조적 차이점 - 폰노이만 방식의 프로그램 내장방식 구조를 기반으로 설계된 컴퓨터
RISC(비교3)
▣ 명령어 - 명령어 수가 적고 길이가 고정적, 워드와 데이터 버스 크기가 동일 - 실행 사이클도 모두 동일 ▣ 레지스터 - 다중 래지스터 사용 및 최적화 ▣ 메모리 - 메모리는 Load, Store 명령만 처리 ▣ 파이프라이닝 - 파이프라이닝을 사용하기 쉽고 많이 사용, 슈퍼스칼라 ▣ 제어방식 - Hardwired control ▣ 컴파일러 - 단순한 컴파일러 구현 가능 - 컴파일 작업 실행 시 CISC와 비교하여 Binary 코드의 길이가 길다 ▣ 회로구성 - 단순함 ▣ 프로그램 - 명령어가 적고 단순하므로 많은 수의 명령어가 조합되어 사용 ▣ 사용환경 - 단순한 명령이 반복적으로 많이 사용되고 빠르게 처리되는 환경 ▣ 명령어 세트 크기와 명령어 형식 - 상대적으로 적은 수의 명령어 세트 - 고정길이 명령어 형식 (32비트) - 대부분 레지스터 참조 명령 ▣ 주소지정 방식 - 3 ~ 5 가지 정도 ▣ 범용 레지스터 - 32 ~ 192 개의 범용 레지스터 ▣ CPU 제어 - 하드 와이어 제어 방식 사용 ▣ 구현 - 하드웨어, 간단한 마이크로 명령어 - 단일 사이클의 명령어 실행 - 단순한 파이프 라인 ▣ 명령어 수행 - 하드웨어에 의해 직접 실행 ▣ 단점 - 컴파일러의 설계 어려움 ▣ 제품의 예 - SPARK, IBM RS 6000, M88000, MIPS, R4000, AMD29000
MEMS(Micro Electro-Mechanical System)
▣ 정의 - 마이크로미터(100만분의 1m) 크기(micro)의 전자적(electro), 기계적(mechanical) 요소들이 결합된 장치(System) ▣ 특징 - 전자와 기계의 융합장치 - 초소형 시스템 - 반도체 공정을 사용 ▣ 응용분야 1) 자동차 - 압력센서, 에어백용 가속도계, 자이로스코프, 차체 제어용 가속도계 및 자이로, MAP 센터, 타이어 공기압 센서 2) 정보통신 - RF, 안테나, 광스위치, 잉크젯프린터 헤드 3) IT - HDD 헤드, 고해상도 헤드, 잉크젯프린터 헤드, 기억소자 4) 자동화 - 압력센서, 화학센서, 가속도계, 적외선 이미지 센서 5) 전자, 가전 - 초소형 박막형 전지, 가전제품, 디스플레이 6) 의료 - 다기능 능동형 내시경, DNA분석기 7) 환경 및 에너지 - 화학센서용 ▣ 주요요소 - 실리콘 관련 기술 : 공정기술, 기관전달, 선 및 불 구조 - 유기소재 관련 기술 : 실리콘 배치 및 전기적 연결 - 패키징 기술 : IC클럭 주파수, 핀수 증가로 동반 발전 ▣ 장점 - 소형화 - 집적화, 고신뢰화 - 저가격화
CPLD(Complex Programmable Logic Device)
▣ 정의 - 게이트 집적도가 낮아 용량이 작은 프로그래머블 반도체 소자 ▣ 집적 게이트 수 - 수백~수천 ▣ 소자크기 - 작다 ▣ 가격 - 저가 ▣ 구성요소 - EEPROM 또는 플래시 메모리 ▣ Architecture - PAL-Like ▣ 적용 분야 - 정밀한 타이밍이 필요한 저용량 디바이스
FPGA(Field Programmable Gate Array)
▣ 정의 - 프로그램 가능한 논리소자와 이들 논리 소자들 간의 배선 또한 프로그래밍 가능한 반도체 소자 ▣ 집적 게이트 수 - 수맥만 ▣ 소자크기 - 크다 ▣ 가격 - 고가 ▣ 구성요소 - S램과 플래시메모리의 조합 ▣ Architecture - Gate array-like ▣ 적용 분야 - 주로 대용량 디바이스에 사용
SoB (System on Board)
▣ 정의
- 임베디드 시스템에 필요한 CPU와 구체적인 물리계층을 보드 하나에 올리는 방식
▣ 특징
- 대부분 타겟보드
- SOC에서 제공하는 기능을 물리적으로 연결할 수 있게 해주는 단자와 슬롯을 여러개 내장
SoC (System on Chip)
▣ 정의 - 하드웨어, 소프트웨어 등 시스템 레벨의 모든 기능을 하나의 단일칩에 집적하는 방식 ▣ 특징 - 저전력 : 블록통합으로 소모 절감 - 이동성 : 하나의 칩 - 고성능 : 기능모듈간 최적화 - 고비용 : 장시간의 개발비용 - 낮은 유연성 : 마스크 변경 어려움 ▣ 주요 기술 1) SoC 설계 - 블록 기반 설계 - 플랫폼 기반 설계 - LSI 직접회로 2) 가공 기술 - 초정밀가공, 칩 양산기술 - MEMS - 나노기술 3) 운영체제 - 내장형 특수목적 임베디드 OS - RTOS 4) 메모리관리 - 멀티태스킹 - 스케쥴링 - 쓰레드 - 임베디드 SW ▣ 설계 방법 1) 블록 기반 설계 - IP 재활용, 초기방법 2) 플랫폼 기반 설계 - 범용적 플랫폼 구성 - 플랫폼 재활용, 현재방법
SiP (System in Package)
▣ 정의 - 서로 다른 부품이나 IC를 하나의 패키지로 통합하는 방식을 통해 시스템 레벨의 고집적 IC를 실현하는 방식 ▣ 특징 - Time to Market : 다품종 소량생산 - 보안문제해소 : IP 거래 보안 문제 해소 - 소형화 : 부품 통합 - 설계의 단순화 : 패키지 안에서 라우팅 모두 처리
SoP (System on Package)
▣ 정의 - 모든 필요한 기능이 단일 패키지에 집약되어 시스템의 소형화 및 융, 복합화를 위한 차세대 패키징 패러다임 ▣ 특징 - SoC, MEMS, RF소자, 광소자, SiP소자 등을 모두 포함하여 한 패키지에 집적 ▣ SoC, MCM, SiP, SoP 기술 관계도 - SoC : DRAM, Flash, SRAM - MCM : OE IC, Digital ID, RF ID - SiP : SIP-IC, SIP-PKG - SoP : RF IC, Opto IC, Digital IC
DAS (Direct Attached Storage)
▣ 정의 - Data Server와 외장형 저장장치를 전용 케이블로 직접 접속하는 방법 - SCSI, Fiber Channel 등 전용 케이블 이용 ▣ 특징 - 서버가 채널(SCSI 또는 Fiber Channel)을 통해 대용량 저장장치에 직접연결 - 각 서버는 자신에게 할당된 각자의 파일시스템 관리 - 서버에서 채널을 통해 저장장치에 직접 연결하므로 속도 빠름 ▣ 장점 - 주어진 데이터 전송 성능의 보장 - 안전성이 우수함 - 전용케이블 사용 ▣ 단점 - 파일 시스템의 공유가 어려움 - 확장성, 유연성의 부족 - 연결되는 서버의 수 제한
NAS (Network Attached Storage)
▣ 정의 - 기존 Network(Ethernet)을 통한 저장장치 접근 기술 - 특정 저장 장치용 File Server를 두어, 일반 서버와 LAN을 기반으로 접속함 - NFS, CIFS 또는 DAFS를 통해서 파일공유를 전용하는 스토리지 구성 ▣ 특징 - LAN 속도에 영향을 받게 되며, File Server에 의해 Storage용량이 제한됨 - 데이터 접근 요청에 의한 File Server의 병목현상 발생 가능성 - File Server가 지원하는 Storage 종류만 설치 가능 - File Server shutdown 시 Storage 접근 불가 ▣ 장점 - 이기종간 파일 공유 - 설치 및 관리 용이 - DAS방식의 Locking과 Consistency 문제 해결 ▣ 단점 - LAN 대역폭 잠식 - OLTP 성능 저하 - LAN, Channel 접속단계 증가로 장애 포인트 늘어남
RAID (Redundant Array of Independent Disks)
▣ 정의 - 처리속도, 데이터 보호를 목적으로 여러 DISK를 중복성을 가진 하나의 논리적인 Disk(Array)로 변환하는 저장장치 ▣ 목적 - 대용량 - 가용성 - 고성능 - 상호환성 ▣ 구현원리 - Data Stripping : 데이터를 여러 조각으로 나누어 여러 Disks로 분산 저장하고 동시 Access - Redundancy : 일부 Data가 손실된 경우에도 복구 할 수 있도록 Data를 중복저장 ▣ 구성요소 - RAID 전용 Controller - Stripping Data Recording - Mirroring, Parity - Hot-swap & Online Data Rebuild ▣ 유형 (스미해 패인 디듀) 1) RAID 0 - Stripping - I/O 성능 우선 - 중복 없이 데이터를 여러 개의 디스크에 세그먼트 단위로 분할 저장 - 데이터는 병렬로 Write, 디스크는 비동기로 작동 - 장애에 대한 여분의 공간을 가지지 않으므로 데이터 복구 기능 부족 2) RAID 1 - Mirroring and Duplexing - 거의 완벽한 결함 허용도 제공 - 모든 디스크 마다 하나의 중복 디스크 설치하여 동일 데이터를 중복으로 저장 - 높은 가용성, 높은 비용 - 높은 신뢰성, Mission Critical 업무 3) RAID 2 - Hamming Code EDD - 비트 단위 인터리빙 방식 - 자료를 비트별로 각 디스크에 순서적으로 저장하는 방식 - 자료의 분실을 막기 위해 해밍 코드 사용 - 4개의 저장 디스크를 위해 3개의 오류 정정 디스크 사용 - SCSI 드라이브의 경우 에러 검출 능력이 있으므로 현재 이 레벨은 잘 사용되지 않음 4) RAID 3 - Single Check disk per Group RAID - 패리티 비트 방식을 이용한 오류 검출 및 정정 - 한 개의 그룹당 중복디스크를 하나만 할당하는 방식 - 데이터 디스크에 세그먼트 단위로 저장하며 별도의 디스크에 Parity 데이터를 저장 - 대용량 데이터 처리에 적합 (병렬 데이터 읽기/쓰기 가능) 4) RAID 4 - Independent Disk Array - 블록 단위 인터리빙 방식 - RAID 3과 동일한 방식이나 다만 별도의 디스크에 Block 단위로 저장 - 매 쓰기 동작을 위해 패리티 디스크를 두번 씩 액세스 5) RAID 5 - Rotating Independent Disk Array) - Bit-Interleaved Distributed-Parity - 데이터와 Parity를 함께 Stripping 하여 각 디스크에 저장 (회전 패리티 방식) - RAID 4의 문제점을 보완하기 위해 패리티 블록들을 Round Bobin 방식으로 분산 저장 - 높은 처리속도를 보장하며 I/O가 빈번한 곳에 적합 - 데이터 디스크들의 수가 G개일 때 최대 (G+1)/2개의 쓰기 동작들의 병렬 수행 가능 - 한 블록만 갱신하는 작은 쓰기의 경우 네번의 디스크 액세스가 필요하기 때문에 성능 저하 6) RAID 6 - N+2 디스크 - 2가지 다른 패리티를 계산하여 저장 - 2차원 패리티 방식 - RAID 5에 열에 대한 패리티 외에 행에 대한 패리티 추가 - 2개 이상의 디스크에 결함이 발생하여도 회복 가능 - 한번의 쓰기 동작에 6번의 액세스 동작 필요 7) RAID 0+1 - Rotating Independent Disk Array) - RAID 0의 장점인 빠른 처리속도와 RAID 1의 Mirroring을 이용한 구성박식 - 사용량은 50%
SAN (Storage Area Network)
▣ 정의 - 서버가 파이버채널 스위치(SAN Switch)를 통하여 Storage를 연결하는 기법 ▣ 특징 - 서버측면에서 스토리지 공유 가능 - 스토리지 측면에서 서버 공유 가능 - 최대 10Km까지 고속 지원(10Gbps) - 네트워크 부하가 없고 추가 확장이 용이 - 대용량 DB시스템, DW, Multimedia 저장용으로 사용 ▣ 장점 - 무정지 확장성 - 고성능 - 관리의 효율성이 높음 ▣ 단점 - 고비용 - 호환성 체계 미흡
FAN (File Area Network)
▣ 정의
- 이질적인 IT환경에서 체계적이고 통합적인 파일 데이터의 관리를 위한 기술
- 파일에 기초를 둔 블록 스토리지를 통하여 기존 데이터 관리 방식에서 확장하여 사용자 파일 데이터 전송 및 가상화 서비스 등을 제공하는 데이터 관리 솔루션
스핀락(Spin Lock)
▣ 개요 - 멀티프로세싱 환경에서 동작하는 일종의 Locking 메커니즘 ▣ 특징 - 짧은 크리티컬 섹션에 유용 - SMP 시스템에 유용 - Busy Waiting ▣ 획득과 해제 순서도 1) 스핀락 주소를 인자(slp)로 받음 2) *slp비트를 캐리플래그로 복사, 1로 설정 3) 캐리 플래그 검사 수행, 캐리 플래그=0 ? YES) 스핀락이 잠기지 않은 상태(정상수행) NO) 스핀락이 잠긴상태 = spin_lock 메크로를 이용하여 스핀락의 획득, spin_unlock매크로를 이용하여 스핀락의 해제 ▣ 비교 - 세마포어 - 뮤텍스 - 모니터