CAOS Flashcards Preview

PE > CAOS > Flashcards

Flashcards in CAOS Deck (83):
1

관련법칙

(무마 암프 요수 샤채 길광)
- 무어 (마이크로칩, 성능2배, 가격절반)
- 암달 (프로세서 병렬화 한계)
- 요르돈 (수확체증의 법칙)
- 샤논-하아틀리이 (채널용량, 잡음, C = W log2(1+S/N)
- 길더 (광섬유 대역폭, 12개월 마다 3배 증가)

2

논리회로

* 조합논리회로: 출력신호가 입력신호의 의해서만 결정 되는것
and, or, not과 같은 기본 논리소자의 조합으로만 만들어 진다.
ex> 가산기, 비교기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서, 코드컨버터 등

* 순차논리회로 : 출력신호가 입력신호뿐 아니라 이전상태의 논리값에 의해 결정되는 회로
플립플롭과 같은 기억소자를 포함한다.
ex> 레지스터, 카운터 등
cf) 동기식 순차논리회로와 비동기식 순차논리회로?
클록펄스의 유무에 따라결정된다. 클록펄스가 있으면 동기식, 비동기식은 클록펄스없이 입력타이밍에 의존한다.

3

부트로더

- 정의 : 운영체제 가동 프로그램
- 기능 : 시스템 초기화, 커널적재
- 종류 : GRUB(GNU), LILO(Linux), ARMBoot, BLOB(ARM), PMON(MIPS), u-Boot(ARM)
- 절차 : BIOS -> 1차(MBR/PBR) -> 2차(GRLDR, NTLDR) -> 커널

4

i-node

- 정의 : 유닉스 파일 데이터 블록 포인터
- 구조(모오타싸 다싱더트) : mode, owners, timestamps, size block count, direct blocks, single indirect(4MB), double indirect(4GB), triple indirect(4TB)

5

마이크로 커널

- 정의 : OS 핵심기능만 커널에 구현
- 구성(프쓰메커슈) : Process, Thread, Memory, Communication, Supervisor

6

모놀리딕 커널

- 정의 : OS 주요기능 모두 제공
- 구성(디파네) : Device/File System/Network Manager

7

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

8

Embedded System

- 정의 : 특정목적 수행 SW/System
- 특징 : HW, SW 동시설계, 소형, 실시간, 저전력
- 분류(실특소저) : 실시간 처리(경성, 연성), 특수목적(가정, 정보, 공장, 사무), 소형, 저전력
- 테스트 자동화 이슈 : Event Driven, Time Critical, Platform Diversity, Platform Stability, Development Envronment
- 테스트 자동화 도구 : 기능, 호스트, 타겟, 데이터, 품질, 인증

9

Embedded OS

- 기능 : 실시간 처리, 프로그램 스케줄링, 멀티 태스킹, 선점형 커널지원, 부팅지원, XIP(eXcute In Place), GUI, 통신

10

모바일 OS

- 정의 : 기본 OS 기능을 제공하고 서비스와 라이브러리를 포함하는 플랫폼 OS
- 기술 : 기본OS(커널, 미들웨어), 플랫폼OS(App Framework, UI Framework, Apps)
- 종류 : iOS, Android, Web OS, Tizen

11

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

12

SQLLite

- 정의 : 어플리케이션 프로세스 영역 내부에 공존하는 임베디드 데이터베이스
- 구성(코코액백)(인커버 토파코 비패오 유테) : Core(Interface, SQL Command Processor, Virtual Machine), Compiler(Tokenizer, Paser, Code Generator), Backend(B-Tree, Pager, OS Interface), Accessories (Utilities, Test Code)

13

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

16

FIFO Anomaly

- 개념 : 프레임 개수 추가, page fault  증가
- 현상 : locality 미고려 문제점 -> LRU 고안
- 해결 : SCR (FIFO 단점 보완)
- SCR 개념 : 각 페이지마다 참조 비트, 0 인 경우 교체, 1인경우 0으로 지정 후 FIFO 리스트의 맨 마지막으로 피드백

17

MMU (Memory Management Unit)

- 개념 : 가상 메모리에서 주소 매핑, 논리적 주소를 물리적 주소로 변환하는 하드웨어
- 과정 : CPU에서 MMU에 가상 주소 전달 -> MMU는 TBB부터 Page Table 검색 -> Page Table 에서 물리주소 검출 -> 물리주소의 데이터 CPU에 전달

18

TLB(Translation Look-aside Buffer)

- 필요성 : 페이지 테이블 반입, 엑세스 데이터 반입 두번 엑세스 시간 단축
- 원리 : 시간 지역성, 연관 사상
- 동작 : TLB 우선검색, TLB Hit, TLB Miss, 메모리 접근

19

캐시 메모리

- 정의 : CPU와 주기억장치 사이에 위치한 소형 고속 메모리
- 특성 : 공간지역성, 시간지역성, 순차지역성
- 매핑기법 : Direct(블록분할), Full Associative (태그필드), Set Associative(라인분할)
- 쓰기정책 : Write Through(동시), Write Back(제거될 때)
- 캐시 일관성 문제 해결 : 공유 캐시 사용, 공유변수를 캐시에 저장하지 않기, 버스감시 매커니즘 사용, 디렉토리 기반 유지 기법 사용

20

캐시 플러시

- 개념 : 주메모리에서 데이터를 다시 읽어 들일 필요가 있을 경우 캐시를 비우는 동작
- 구성 : Flush (Cache reset, I-Cache/D-Cache 중 하나만 실행), Clean (Cache Write Back, D-Cache 에서만 동작)

21

Locality

- 정의 : 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성
- 종류 : 시간적(순환, 서브프로그램, LRU), 공간적(Array, Sequential Processing, Pre-fetch), 순차적
- 관리방법 : 기억장치 계층구조, 캐시 엑세스 시간, 워킹셋
- 사례 : Cache Memory, Virtual Memory, CDN

22

Thrashing

- 정의 : Multi Processing 기능을 갖춘 가상 시스템에서 페이지부재가 너무 많이 발생하여 프로세스 실행보다 페이지교체에 더 많은 시간을 소모하는 현상
- 원인 : 부적절한 페이지 교체 정책, 과단한 멀티 프로세싱 정책
- 발견방법 : Page Fault 조사, Swapping 조사
- 예방방법 : Working-Set(전이), Page-Fault Frequency(상한할당, 하한회수)

23

문맥교환(Context Switching)

- 개념 : 멀티 프로세스 환경에서 실행 중인 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 CPU에 적재하는 과정
- 관련용어 : Dispatching, Time Quantum, Preemption
- 절차 : 인터럽트 -> 모드전환(USER->OS) -> 기존 상태 PCB 저장 -> 신규 상태 PCB 로드 -> 다음 프로세스 실행 -> 모드전환(OS->USER)
- 발생시점 : 비자발적(타임 슬라이스 소진시, 인터럽트 발생시), 자발적(sleep, exit, wait)
- 오버헤드 발생 시점 : 인터럽트, 프로세스 스케줄링, 디스패치
- 오버헤드 해결 방안 : 다중 프로그래밍 정도 낮춤, 프로세스간 문맥교환 수행, 쓰레드 이용

24

CPU 스캐줄링

- 정의 : 언제, 어느 Process에 CPU를 할당할 것인지 결정하는 작업
- 특징 : 처리능력 최대화, 경과시간 최소화, 대기시간 최소화, 응답시간 최소화, CPU 이용율 극대화
- 종류 : Scheduling Queue, Job Scheduler(장기), Process Scheduler(중기), Read Scheduler(단기)
- 기법 : 선점(RR, SRTF, MLQ, MLFQ), 비선점(FCFS, SJF, Priority Queue)

25

Dispatcher

- 정의 : 프로세스 전환수행을 하는 운영체제내부모듈
- 기능 : 프로세스 공간의 전환 처리(switch_mm), 레지스터의 전환 처리(switch_to), 부동 소수점 연산 레지스터의 지연 전환 가능, 범용 레지스터의 백업, CPU 할당, 스케줄러에 의한 호출(선점)

26

Deadlock

- 정의 : 다중 프로그램 환경에서 두 개 이상의 프로세스가 아무리 기다려도 자원을 사용할 수 없는 무한 대기 상태
- Deadlock 관리 필요성 : 자원 낭비 방지, 성능 저하 방지, 사용자 불만 해소
- 발생원인 : 상호 배제, 점유와 대기, 비선점, 환영 대기
- 교착상태 예방 : 부정
- 교착상태 회피 : 제거
- 교착상태 발견 : 특정경우 -> 알고리즘 -> 발견 -> 회복
- 교착상태 회복 : 수동처리(process kill), 제거(abort)
- 교착상태 해결 위한 시스템 설계 : PCB/Buffer/Semaphore 자원 순서화, 주 기억 장치 선점(Paging/Segmentation/Swapping), 자원 필요량 산정, 교체 가능 공간 사전 할당

27

Banker 알고리즘

- 정의 : 감시와 제시, 교착 상태 회피 알고리즘
- 자료구조 : Available(사용가능), Max(최대 자원 요구), Allocation(할당 받음), Need(남은 자원)
- 동작원리
1) 현재 사용 가능한 리소스의 양을 구한다 (Available)
2) 추가 요구량을 구한다 (Request = Max - Available)
3) 추가 요구 자원이 현재 여유 자원보다 적은 프로세스 (i)를 찾는다
4) 수행 가능한 프로세스가 점유한 자원을 여쥬 자원으로 바꿈 (끝내고 반환한 경우로 가정) 한 후에 3번 부터 반복

28

상호배제 해결을 위한 소프트웨어와 하드웨어적 방안

- 소프트웨어적 방안 : 데커(공유변수, 차례설정), 피터슨(공유변수, 의사표시, 차례양보), 램포트(번호표 부여)
- 하드웨어적 방안 : 인터럽트 금지, Test & Set, Swap

29

세마포어

- 정의 : P와 V라는 2개의 연산에 의해 동기화를 유지시키며 상호 배제의 원리를 보장하는 기법
- 유형 : 이진, 계수
- 원리 : s가 1이면 접근가능, s가 0이면 접근불가
- 연상 : 초기화(s에 초기값 부여), P연산(Wait, s = s - 1), V연산(Signal, s = s + 1)
- 적용방법 : Busy waiting(while), Sleeping Queue(if)

30

세마포어(비교)

- 주체 : OS, 개발자 주체의 동시성 지원
- 상호작용 : 모니터에 이론적 기반 제공
- 특징 : s의 타입에 따라 Binary/Counting으로 구분
- 구현사례
Semaphores S;
P (s); // 검사 s--
임계구역()
V (s); //증가 s++
- 언어 : P, V 연산
- 공통점 : 동시성 지원

31

모니터(비교)

- 주체 : 프로그래밍 언어 수준의 동시성 지원
- 상호작용 : 세마포어의 단점인 타이밍 오류 해결 및 개발편의성 보완
- 특징 : 한 시점에 하나의 프로세스만 모니터 내부에서 수행
- 구현사례
Monitor monitor-name
{
//지역변수 선언
Public entry p1(...) { }
Public entry p2(...) { }
}
- 언어 : JAVA의 synchronized Object, .NET의 모니터

32

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 효율성 강화
⦿ 단점 : 상호 방해, 오버헤드, 하드웨어 지원 필요

33

프로세스

- 정의 : 메모리에 로드 되어 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)

34

PCB (Process Control Block)

⦿ 정의 : 프로세스에 대한 중요 정보를 저장해 놓은 저장소
⦿ PCB의 자료구조(상고부자 우메할 카레)
- 프로세스의 현 상태
- 프로세스의 고유한 식별자
- 프로세스의 부모 프로세스에 대한 포인터
- 프로세스의 자식 프로세스에 대한 포인터
- 프로세스의 우선순위
- 프로세스가 위치한 메모리에 대한 포인터
- 할당된 자원에 대한 포인터
- 프로그램 카운터
- 중앙처리장치 레지스터

35

메모리 인터리빙

⦿ 키워드 : 상위/하위/혼합, C-Access, S-Access
⦿ 정의 : 메모리 접근시간을 최소화하기 위해 메모리를 복수개의 모듈로 나누고 각 모듈에 연속적인 주소를 부여하여 동시 접근이 가능하게 하는 기법
⦿ 활용방식
- 상위 인터리빙 : 순차적
- 하위 인터리빙 : 연속적
- 혼합 인터리빙 : 뱅크(상위), 모듈(하위)
⦿ 엑세스 방식
- C-엑세스 : 순차적 도착
- S-엑세스 : 동시읽기, 순차전송

36

디스크 스케줄링

⦿ 키워드 : 탐색시간, 회전지연, 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

37

인터럽트 (interrupt)

⦿ 키워드 : IRQ, IPR, ISR, 폴링, 데이지 체인, 벡터, 우선순위(전원이상, 기계착오 -> 외부신호 -> 입출력 -> 내부 검사 -> SW인터럽트
⦿ 정의 : CPU가 처리하던 프로그램을 중단하고 컴퓨터 제어를 특수사건이나 환경을 처리할 수 있도록 보내는 제어신호
⦿ 필요성 : CPU 처리 효율 향상, I/O 우선순위, 수행결과 저징 및 복구
⦿ 인터럽트 결정 방법
- 요청(IRQ), 처리(IPR), 서비스(ISR)
⦿ 인터럽트 종류
- 외부(전원이상, 기계착오, 외부신호, 입출력)
- 내부(프로그램검사, SVC 인터럽트)
⦿ 인터럽트 우선순위 체계
- SW(폴링), HW(직렬 우선순위(Daisy-Chain), 병렬 개별회선(Multiple-Interrupt))
⦿ 중첩 인터럽트 처리 : 우선순위, 순차처리

38

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 채널 프로세서

39

Memory Mapped I/O

⦿ 키워드 : 주소영역공유, Load, Stor
⦿ 정의 : 주소공간의 일부가 입출력 장치에 할당되어 그 주소로 읽거나 쓰는 것이 입출력 장치로 명령 하는 것으로 해석되어 입출력 하는 방식
⦿ 특징 : 쉬운 설계, 임베디드 프로세서 주로 사용, 이용효율 낮음
⦿ 주소영역 : 전체 = 1024, 상위 512 = 기억장치, 하위 512 = I/O 장치
⦿ 명령어 : Load, Stor)
⦿ 프로세서 : ARM, MIPS

40

I/O(Isolated) Mapped I/O

⦿ 키워드 :
⦿ 정의 : I/O Interface 번지와 메모리의 번지를 구별하여 지정하는 방법
⦿ 특징 : 주소영역 전체 사용, PC환경 주로 사용, 이용효율 높음
⦿ 주소영역 : 기억장치 = 1024, I/O 주소 = 1024
⦿ 명령어 : IN, OUT
⦿ 프로세서 : x86계열

41

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

42

Blocked I/O

⦿ 정의 : 커널에서 프로세스 버퍼로 복사될 때까지 대기하는 모델
⦿ 장점 : 시스템 자원 소모 적음, 적은 수의 작업 수행시 고성능, 이해하기 쉬운 직선적 코드진행
⦿ 단점 : 대기시간 지연, 많은 작업 수행시 디버그 어려움
⦿ 활용 : 접속한 클라이언트 하나씩 처리

43

Non-Blocked I/O

⦿ 정의 : 폴링하다 데이터가 도착하면 I/O를 수행하는 모델
⦿ 장점 : 멀티 스레드를 사용하지 않고 여러 입출력 처리
⦿ 단점 : 지속적 Polling으로 Busy-Waiting 초래, 시스템 효율 저하 및 복잡한 코드 진행
⦿ 활용 : 여러 클라이언트 병렬 처리

44

Von Neumann

⦿ 정의 : 단일저장장치(메모리)와 연산장치(ALU), 중앙처리장치(CPU(로 구성된 프로그램 내장형 구조 모델
⦿ 구조 : 데이터 메모리와 프로그램 메모리가 구분되어있지 않고 하나의 버스로 연결되어 구성
⦿ 프로세스 : 메모리 -> FI -> 메모리 -> DI -> 메모리 -> EI -> Store 순차 실행
⦿ 장점 : 공용 메모리 사용으로 상대적 구현 비용 저렴
⦿ 단점 : 파이프라이닝 기술 사용시 메모리 공유 문제 발생
⦿ 문제점 : CPU의 비효율적 활용, 주기억장치 병목현상 발생
⦿ 해결방안
- 병렬처리 : SMP, MPP
- 주기억장치 병목해결 : Cache Memory, Hyper transport
- Harvard 아키텍처 병행 사용 : Harvard(명령어 캐시와 데이터 캐시로 분리하는 경우), Von Neumann(Cache miss의 경우)

45

Harvard Architecture

⦿ 정의 : 명령용 버스와 데이터용 버스로 물리적으로 분할한 컴퓨터 아키텍처
⦿ 특징 : 메모리로 부터 명령어와 데이터 동시에 사용, 향상된 속도, Fetch->Decode->Execute->Store 병렬처리, Stored Program
⦿ 프로세스
- 명령어 메모리 -> FI
- Store -> 데이터 메모리
⦿ 장점 : 파이프라이닝 기술 사용을 위한 최적의 환경 제공
⦿ 단점 : 별도 메모리 사용, 구현비용 증가, 회로 구조 복잡

46

Stored-Program computer

⦿ 정의 : 프로그램이 메모리에 저장되는 구조로 명령어가 메모리 저장상태에서 CPU 해석 후 연산이 진행되는 컴퓨터
⦿ 동작절차
1) 사전준비 : 코딩, 컴파일
2) 실행 : 명령어와 데이터 모두 메인메모리에 로드
3) Fetch : CPU내의 CU가 PC 값을 이용해 메인메모리의 명령어를 읽어옴
4) Decode : 읽어온 명령어 해독 뒤 PU(ALU)에게 명령 지시
5) Execution : ALU가 명령실행
6) Write Back : 연산결과 저장, 결과를 메인 메모리에 다시씀

47

병렬컴퓨터

⦿ 정의 : 여러 개의 프로세서들이 하나 이상의 작업을 분할하여 동시에 다수의 프로세스를 처리하는 컴퓨터
⦿ 병렬처리의 유형
1) 병렬처리 단위에 따른 병렬성 수준
- 명령어 수준(ILP) : 1개 이상 명령어 1사이클 실행 (코드, 명령어)
- 데이터 수준(DLP) : 루프, 서로 다른 Data로 동일 Task 연산
- 작업 수준(TLP) : 기능적 분해
2) 상호 작용 크기에 따른 병렬성 유형
- Fine-grained(ILP) : 프로세스간 빈번한 데이터 교환
- Coarse-grained(DLP) : 벡터/메트릭스 등 대용량 작업
- Embarrassingly parallel(TLP) : 초대형 시스템

48

Flynn의 분류

⦿ Flynn의 병렬 하드웨어 아키텍처
- SISD : 1회 1개 명령어 데이터 처리
- SIMD : 다수 데이터, 1개 명령어
- MISD : 1개 데이터 다수 명령어
- MIMD : 다수 프로세서/데이터

49

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)

50

균일 기억장치 액세스 (UMA : Uniform Memory Access)

- 공유 메모리 사용 병렬처리
- 프로세서 증가 시 병목현상 발생

51

불균일 기억장치 액세스 (NUMA : Non-uniform Memory Access)

- 다수의 UMA를 상호 연결망으로 구성
- 분산 메모리 공유 구조(병목현상 감소)

52

캐쉬-온리 기억장치 액세스 (COMA : Cache Only Memory Access)

- 주기억 장치 없음
- Cache 간 연계하여 공통 기억장치 구성

53

무-원격 기억장치 액세스 (NORMA : No Remote Memory Access)

- 프로세서가 다른 원격 기억장치에 직접 접근불가
- 프로세스간 Message Passing 방식으로 데이터 교환

54

대칭적 다중 프로세서 (SMP : Symmetric Multi Processor)

- 강결합 방식 공유 메모리 구조
- 2~64 개의 프로세스로 구성 (중대형급)

55

대규모 병렬 프로세서 (MPP : Massively Parallel Processor)

- 약결합 방식 분산 메모리 구조
- Message Passing 방식으로 데이터 교환

56

캐쉬-일관성 NUMA (CC-NUMA : Cache-Coherent NUMA)

- COMA의 캐시 일관성 문제 해결을 위해 SMP를 상호연결망으로 연계
- 공유-분산 기억장치 시스템 구성

57

분산 시스템/클러스터 컴퓨터 (Distributed System/Cluster Computer)

- 분산 시스템 : 상호 연결망을 Ethernet(IEEE 802.3)으로 구성
- 클러스터 컴퓨터 : 상호 연결망을 SAN으로 구성
- 초고성능 분산/병렬처리 컴퓨팅

58

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

59

타임서버

⦿ 정의 : 표준시각을 유지하고 인터넷이나 사내 네트워크에 TP(Time Protocol), NTP(Network Time Protocol) 등의 신호를 제공하는 서버
⦿ 특징
- 계층구조 : 0~15계층, 동일계층/1단계 상위 계층과 직접 통신
- 상호참조 : 3개이상 상위, 2개이상 동일 계층 참조
- 낮은부하 : 작은 패킷
⦿ 필요성
- 시스템 관리 측면 : 로그 서비스, 메시지 관리, 파일 서비스, 작업 예약
- 보안 측면 : 포렌식/감사, 인증, 메시지 위조 대응, CCTV
- 비즈니스 측면 : 산업/연구, 통신, 교통, 금융
⦿ 고려사항
- 기능측면 : 정확성, 신뢰성, 인터페이스
- 운영측면 : 보안성, 경제성, 유지보수성

60

Watchdoc Timer

⦿ 정의 : 프로그램이 의도치 않게 무한루프에 갇히거나 비정상 상황 등 오류상황 회피를 위한 전자 타이머
⦿ 종류 : 단단계, 다단계, 소프트웨어
⦿ 절차 :
- Watchdoc Timer는 정해진 임의의 값부터 카운트 다운을 시작하고 그 값이 "0"에 도달하면 CPU Reset 으로 문제 해결
- 시스템은 원하지 않는 Reset 을 피하기 위해 주기적으로 kicking을 시도하여 타이머의 값을 설정된 원래의 값으로 되돌려 놓음

61

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 : 성능평가 및 최적화
- 품질과 성능 : 품질 개선 활동, 최적화 활동 구분

62

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 : 유저생성, 권한부여

63

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로 전환

64

CISC(Complex Instruction Set Computer)

▣ 등장배경
- CPU 처리속도의 향상
- 고급언어의 등장
▣ 개념
- 단순한 명령어 처리에서 복합적인 명령 수행까지 하나의 명령집합으로 실행할 수 있도록 여러 개 명령어를 가진 프로세서 구조
▣ 명령어 집합 구조
1Byte OP-CODE
2Byte OPERAND
3Byte OP-CODE OPERAND
4Byte OP-CODE OPERAND
= 필요한 정보만 명령어로 저장(가변길이)하므로 낭비되는 코드를 줄일 수 있으며 이에 따라 프로그램 크기도 작아짐
▣ 주요 특징
- 가변길이 명령어 사용
- 하나의 명령어가 복잡한 기능 수행
- 별도의 명령어 구현이 가능

65

RISC(Reduced Instruction Set Computer)

▣ 등장배경
- 명령어 세트의 비효율적 사용빈도
- CISC의 가변길이에 따른 파이프라인 적용 어려움
▣ 개념
- 명령어 수와 주소지정 방식을 최소화하여 제어장치의 구조를 간단하게 구성한 프로세서 구조
▣ 명령어 집합 구조
- OP-CODE, OPERAND1, OPERAND2 (32Bit 고정)
= 32비트의 고정된 동일한 크기로써 파이프라인 적용이 가능
▣ 주요 특징
- 고정길이 명령어 사용
- 하나의 명령어가 단순한 기능 수행
- 유사한 명령어 통합

66

EISC(Extensible Instruction Set Computer)

▣ 등장배경
- 고정길이에 따른 Operand의 확장 어려움
- RISC의 호환성 문제 대두
▣ 개념
- 오퍼랜드 부분을 OP코드와 독립적으로 구성하여 OP코드가 필요로 하는 길이만큼 오퍼랜드를 확장하도록 하는 명령어 구조
▣ 명령어 집합 구조
- OP-CODE, OPERAND1, OPERAND2 (16비트)
- 확장플래그 OP-CODE, OPERAND1, OPERAND2 (16비트)
= 확장 명령어는 확장 레지스터의 값에 새로운 값을 추가해 새로운 확장 데이터를 확장 레지스터에 넣고 확장 플래그를 활성화 시킴으로 필요한 크기의 오퍼랜드를 만듦
▣ 주요 특징
- 높은 코드 밀도 : 필요한 만큼 오퍼랜드 확장 방식
- 효율적인 마이크로프로세서 아키텍처 : 16/32/64비트 모두에서 효율적
- 저전력 : 높은 코드 밀도

67

CISC (비교)

▣ 주요특징
- 복합 명령어 구조
- 하드웨어 복잡
▣ CPU Instruction
- 명령어 개수가 많음
- 길이가 다양하며 실행 사이클도 명령어 마다 다름
▣ 회로구성
- 복잡
▣ 메모리사용
- 높은 밀도 메모리 사용 (메모리 사용이 효율적)
▣ 프로그램 코드 사이즈
- Small(130~140)
▣ 프로그램 측면
- 명령어를 적게 사용
▣ 컴파일러
- 다양한 명령을 사용하므로 컴파일러가 복잡해짐

68

파이프라인 해저드

▣ 프로그램 수행 향상 방법
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 구문에 효과적임
- 반복적으로 수행하는 명령어들을 풀어서 수행함

69

파이프라인 해저드

▣ 프로그램 수행 향상 방법
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 구문에 효과적임
- 반복적으로 수행하는 명령어들을 풀어서 수행함

70

RISC (비교)

▣ 주요특징
- 32비트 고정된 명령어 구조
- 하드웨어 간단
▣ CPU Instruction
- 명령어 길이는 고정적
- 워드와 데이터 버스 크기 모두 동일
- 실행 사이클도 모두 동일
▣ 회로구성
- 단순
▣ 메모리사용
- 낮은 밀도 명령어 사용 (메모리 사용이 비효율)
▣ 프로그램 코드 사이즈
- Large(160~180)
▣ 프로그램 측면
- 상대적 많은 명령어 필요
- 파이프라인 사용
▣ 컴파일러
- 명령어 개수가 적어서 단순한 컴파일러 구현 가능

71

CISC(비교2)

▣ 개념
- 단순명령에서 복잡한 명령까지 하나의 명령집합으로 처리하는 구조 방식
▣ 특징
- 마이크로 프로그램의 제어자 단일 캐시를 갖음
▣ 구조
- 제어장치, 명령/데이타 경로, 캐시, 메인메모리
▣ 구조적 차이점
- 폰노이만 방식의 프로그램 내장방식 구조를 기반으로 설계된 컴퓨터

72

RISC(비교3)

▣ 명령어
- 명령어 수가 적고 길이가 고정적, 워드와 데이터 버스 크기가 동일
- 실행 사이클도 모두 동일
▣ 레지스터
- 다중 래지스터 사용 및 최적화
▣ 메모리
- 메모리는 Load, Store 명령만 처리
▣ 파이프라이닝
- 파이프라이닝을 사용하기 쉽고 많이 사용, 슈퍼스칼라
▣ 제어방식
- Hardwired control
▣ 컴파일러
- 단순한 컴파일러 구현 가능
- 컴파일 작업 실행 시 CISC와 비교하여 Binary 코드의 길이가 길다
▣ 회로구성
- 단순함
▣ 프로그램
- 명령어가 적고 단순하므로 많은 수의 명령어가 조합되어 사용
▣ 사용환경
- 단순한 명령이 반복적으로 많이 사용되고 빠르게 처리되는 환경
▣ 명령어 세트 크기와 명령어 형식
- 상대적으로 적은 수의 명령어 세트
- 고정길이 명령어 형식 (32비트)
- 대부분 레지스터 참조 명령
▣ 주소지정 방식
- 3 ~ 5 가지 정도
▣ 범용 레지스터
- 32 ~ 192 개의 범용 레지스터
▣ CPU 제어
- 하드 와이어 제어 방식 사용
▣ 구현
- 하드웨어, 간단한 마이크로 명령어
- 단일 사이클의 명령어 실행
- 단순한 파이프 라인
▣ 명령어 수행
- 하드웨어에 의해 직접 실행
▣ 단점
- 컴파일러의 설계 어려움
▣ 제품의 예
- SPARK, IBM RS 6000, M88000, MIPS, R4000, AMD29000

73

MEMS(Micro Electro-Mechanical System)

▣ 정의
- 마이크로미터(100만분의 1m) 크기(micro)의 전자적(electro), 기계적(mechanical) 요소들이 결합된 장치(System)
▣ 특징
- 전자와 기계의 융합장치
- 초소형 시스템
- 반도체 공정을 사용
▣ 응용분야
1) 자동차
- 압력센서, 에어백용 가속도계, 자이로스코프, 차체 제어용 가속도계 및 자이로, MAP 센터, 타이어 공기압 센서
2) 정보통신
- RF, 안테나, 광스위치, 잉크젯프린터 헤드
3) IT
- HDD 헤드, 고해상도 헤드, 잉크젯프린터 헤드, 기억소자
4) 자동화
- 압력센서, 화학센서, 가속도계, 적외선 이미지 센서
5) 전자, 가전
- 초소형 박막형 전지, 가전제품, 디스플레이
6) 의료
- 다기능 능동형 내시경, DNA분석기
7) 환경 및 에너지
- 화학센서용
▣ 주요요소
- 실리콘 관련 기술 : 공정기술, 기관전달, 선 및 불 구조
- 유기소재 관련 기술 : 실리콘 배치 및 전기적 연결
- 패키징 기술 : IC클럭 주파수, 핀수 증가로 동반 발전
▣ 장점
- 소형화
- 집적화, 고신뢰화
- 저가격화

74

CPLD(Complex Programmable Logic Device)

▣ 정의
- 게이트 집적도가 낮아 용량이 작은 프로그래머블 반도체 소자
▣ 집적 게이트 수
- 수백~수천
▣ 소자크기
- 작다
▣ 가격
- 저가
▣ 구성요소
- EEPROM 또는 플래시 메모리
▣ Architecture
- PAL-Like
▣ 적용 분야
- 정밀한 타이밍이 필요한 저용량 디바이스

75

FPGA(Field Programmable Gate Array)

▣ 정의
- 프로그램 가능한 논리소자와 이들 논리 소자들 간의 배선 또한 프로그래밍 가능한 반도체 소자
▣ 집적 게이트 수
- 수맥만
▣ 소자크기
- 크다
▣ 가격
- 고가
▣ 구성요소
- S램과 플래시메모리의 조합
▣ Architecture
- Gate array-like
▣ 적용 분야
- 주로 대용량 디바이스에 사용

76

SoB (System on Board)

▣ 정의
- 임베디드 시스템에 필요한 CPU와 구체적인 물리계층을 보드 하나에 올리는 방식
▣ 특징
- 대부분 타겟보드
- SOC에서 제공하는 기능을 물리적으로 연결할 수 있게 해주는 단자와 슬롯을 여러개 내장

77

SoC (System on Chip)

▣ 정의
- 하드웨어, 소프트웨어 등 시스템 레벨의 모든 기능을 하나의 단일칩에 집적하는 방식
▣ 특징
- 저전력 : 블록통합으로 소모 절감
- 이동성 : 하나의 칩
- 고성능 : 기능모듈간 최적화
- 고비용 : 장시간의 개발비용
- 낮은 유연성 : 마스크 변경 어려움
▣ 주요 기술
1) SoC 설계
- 블록 기반 설계
- 플랫폼 기반 설계
- LSI 직접회로
2) 가공 기술
- 초정밀가공, 칩 양산기술
- MEMS
- 나노기술
3) 운영체제
- 내장형 특수목적 임베디드 OS
- RTOS
4) 메모리관리
- 멀티태스킹
- 스케쥴링
- 쓰레드
- 임베디드 SW
▣ 설계 방법
1) 블록 기반 설계
- IP 재활용, 초기방법
2) 플랫폼 기반 설계
- 범용적 플랫폼 구성
- 플랫폼 재활용, 현재방법

78

SiP (System in Package)

▣ 정의
- 서로 다른 부품이나 IC를 하나의 패키지로 통합하는 방식을 통해 시스템 레벨의 고집적 IC를 실현하는 방식
▣ 특징
- Time to Market : 다품종 소량생산
- 보안문제해소 : IP 거래 보안 문제 해소
- 소형화 : 부품 통합
- 설계의 단순화 : 패키지 안에서 라우팅 모두 처리

79

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

80

DAS (Direct Attached Storage)

▣ 정의
- Data Server와 외장형 저장장치를 전용 케이블로 직접 접속하는 방법
- SCSI, Fiber Channel 등 전용 케이블 이용
▣ 특징
- 서버가 채널(SCSI 또는 Fiber Channel)을 통해 대용량 저장장치에 직접연결
- 각 서버는 자신에게 할당된 각자의 파일시스템 관리
- 서버에서 채널을 통해 저장장치에 직접 연결하므로 속도 빠름
▣ 장점
- 주어진 데이터 전송 성능의 보장
- 안전성이 우수함
- 전용케이블 사용
▣ 단점
- 파일 시스템의 공유가 어려움
- 확장성, 유연성의 부족
- 연결되는 서버의 수 제한

81

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 접속단계 증가로 장애 포인트 늘어남

82

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%

83

SAN (Storage Area Network)

▣ 정의
- 서버가 파이버채널 스위치(SAN Switch)를 통하여 Storage를 연결하는 기법
▣ 특징
- 서버측면에서 스토리지 공유 가능
- 스토리지 측면에서 서버 공유 가능
- 최대 10Km까지 고속 지원(10Gbps)
- 네트워크 부하가 없고 추가 확장이 용이
- 대용량 DB시스템, DW, Multimedia 저장용으로 사용
▣ 장점
- 무정지 확장성
- 고성능
- 관리의 효율성이 높음
▣ 단점
- 고비용
- 호환성 체계 미흡

84

FAN (File Area Network)

▣ 정의
- 이질적인 IT환경에서 체계적이고 통합적인 파일 데이터의 관리를 위한 기술
- 파일에 기초를 둔 블록 스토리지를 통하여 기존 데이터 관리 방식에서 확장하여 사용자 파일 데이터 전송 및 가상화 서비스 등을 제공하는 데이터 관리 솔루션

85

스핀락(Spin Lock)

▣ 개요
- 멀티프로세싱 환경에서 동작하는 일종의 Locking 메커니즘
▣ 특징
- 짧은 크리티컬 섹션에 유용
- SMP 시스템에 유용
- Busy Waiting
▣ 획득과 해제 순서도
1) 스핀락 주소를 인자(slp)로 받음
2) *slp비트를 캐리플래그로 복사, 1로 설정
3) 캐리 플래그 검사 수행, 캐리 플래그=0 ?
YES) 스핀락이 잠기지 않은 상태(정상수행)
NO) 스핀락이 잠긴상태
= spin_lock 메크로를 이용하여 스핀락의 획득, spin_unlock매크로를 이용하여 스핀락의 해제
▣ 비교
- 세마포어
- 뮤텍스
- 모니터