Computer Science (46) 썸네일형 리스트형 [Lecture 16] Cache Memory #Cache Memories 캐시 메모리는 하드웨어에서 자동으로 관리되는 작고 빠른 SRAM 기반 메모리이다 자주 액세스하는 기본 메모리 블록 보유 CPU는 캐시(예: L1, L2, L3)에서 데이터를 먼저 찾은 다음 메인 메모리에서 데이터를 찾는다 일반적인 캐시 메모리 시스템 구조: #General Cache Organization (S, K, B) #Cache Defines View of DRAM 캐시의 "기하학"은 다음과 같이 정의된다 S = 2^s 캐시의 세트 수 K = 2^k 집합의 선(블록) 수 B = 2^b 한 줄의 바이트 수(블록) 이 값들은 DRAM의 구성에 대한 관련 사고 방식을 정의한다 DRAM은 B 바이트의 일련의 블록으로 구성된다. 블록(라인)의 바이트는 b비트를 사용하여 인덱싱할.. [Lecture 15] Memory Hierarchy / Cache Memory and Performance #기억 장치 계층 (Memory Hierarchy)의 예시 기억 장치의 계층 구성. 즉, 그 동작 속도가 늦은 것에서부터 차례로 자기 테이프 장치, 자기 디스크 장치, 자기 드럼 장치, 자기 버블 장치, CI 장치 등으로 되는데, 이러한 기억 장치의 계층 구성으로 된 시스템을 말한다 또는 캐시, 주기억 장치, 보조 기억 장치 등으로 구분될 수 있다. 쉽게 말해 기억 용량이나 접근 시간의 차이 등을 고려하여 적당히 계층화된 기억 장치. 계층은 고속·소형의 반도체 기억 장치, 중속의 디스크 기억 장치, 대형·저속의 테이프 기억 장치 등으로 구분된다. 또는 캐시, 주기억 장치, 보조 기억 장치 등으로 구분될 수 있다. #Random-Access Memory (RAM) RAM / 램이란 사용자가 자유롭게 내용을.. [Lecture 14] Pipeline Handling Branches #Branch Hazards 파이프라인에서 다음 명령 시퀀스들을 실행하는 것을 고려해보자. beq가 ID stage로 갈때: 44번으로 instruction를 가져와야 할까? $1 == $3인지에 따라 다음에 실행될 수도 있고 실행되지 않을 수도 있다 어쨌든 우리는 아직 branch target 명령의 주소를 모른다 beq가 ID 단계에 들어가면 우리는 그것이 conditional branch인지도 모른다. 그리고 beq가 EX가 끝날 때까지 branch를 가져가야 하는지 알 수 없다. 따라서 우리는 이미 다음 (순차적인) instruction을 가져왔을 것이다 #Stalling for Branch Hazards branch를 가져갈지 알 때까지 stall을 사용하면된다. beq가 MEM 단계에 도달하기.. [Lecture 8] Computer Performance #성능의 정의 컴퓨터에서 성능이란 무엇일까? 아래 지표를 잠깐 살펴보자. 위에 지표를 보고 우리는 어느 하나의 비행기 모델이 가장 성능이 좋다고 할 수 있을까? 정확하게는 말할 수 없을 것이다. 이렇듯 컴퓨터에서도 컴퓨터의 성능을 측정하는 여러가지의 기준이 있다. #컴퓨터 성능: 시간 Response Time (latency): 작업을 완료하는 데 걸리는 시간 처리량 (throughput): 단위 시간당 완료된 총 작업 수 컴퓨터 리소스를 적게 이용 컴퓨터 시스템이나 응용 프로그램의 높은 이용 컴퓨터의 성능 측정 기준은 다음을 포함한다: 가용성 반응 시간 용량 레이턴시 완료 시간 서비스 시간 대역폭 스루풋 상대 효율 비례 축소 가능 속도 향상 등등 컴퓨터 성능을 나타낼 수 있는 여러 지표들이 있지만, 이.. [Lecture 15] Dynamic Memory Management (malloc/free) EXPLICIT MEMORY MANAGEMENT #Dynamic Memory Allocation Explicit vs. Implicit Memory Allocator Explicit: 응용프로그램이 공간을 할당하고 free한다 예: malloc and free in C Implicit: 응용 프로그램에서 공간을 할당하지만 free하지 않는다 예: Java, ML or Lisp와 같은 언어의 garbage collection Allocation 두 경우 모두 메모리 할당자는 블록 집합으로 메모리의 추상화를 제공한다 사용 가능한 메모리 블록을 애플리케이션에 배포한다 #Process Memory Image 할당자가 sbrk 함수를 사용하여 운영 체제에서 추가 힙 메모리를 요청한고, 힙의 초기 시작은 랜덤화된다.. [Lecture 14] 멀티쓰레딩 VIII - Atomic Variables and Operations #Introduction 적절한 락(lock)이 사용될 때, 여러 스레드는 공유 주소 공간에 접근할 수 있고 공유 메모리 멀티스레딩 프로그래밍 모델의 기본 직관에 해당하는 이러한 공유 변수의 동일한 값을 볼 수 있다. 데이터 레이스가 없는 프로그램만이 순차적 일관성을 제공한다(모든 스레드에 의해 "단계"의 관점에서 모든 메모리 동작의 순차적 순서가 관찰되며 프로그램의 순서와 일치한다) 이를 보장하는 전통적인 방법은 lock사용, 세마포어나 조건 변수를 사용하는 것이었다 lock: lock을 획득하고 중요 섹션에 진입하는 두 번째 스레드에는 lock을 획득한 첫 번째 스레드에서 수행한 모든 업데이트가 표시된다 세마포어/조건 변수: 대기 호출에서 반환되는 스레드는 대기에서 스레드를 반환하게 된 신호 작업 전.. [Lecture 13] 멀티쓰레딩 VII - Performance #Performance Considerations 멀티스레딩 프로그램에서는 정확성이 가장 중요하다. 정확성은 성능과 바꿀 수 없다. 데이터 레이스, 원자성 위반, 순서 위반 또는 교착 상태가 발생하기 쉬운 코드의 성능에 대해서는 아무도 신경 쓰지 않는다. 그렇긴 하지만 이번 포스트에서는 멀티스레딩 프로그램에서의 성능에 대해서 알아보자. 먼저 잠금 (lock)의 비용을 알아 보자. 간접 비용(잠금 사용으로 인한 성능 손실) 아래 나올 사진들은 다음의 실험을 거처 나온 성능 결과이다. 5개의 CPU 바인딩 프로세스를 시뮬레이션하여 Lock을 경합하고 D 기간 동안 각 잠금을 유지한 다음 U 기간 동안 잠금 없이 실행한다. 스레드가 임의로 잠금을 선택한다. 연한 녹색은 잠금 장치를 고정하지 않고 실행되는 쓰레.. [Lecture 12] 멀티쓰레딩 VI - Atomicity Violations #Atomicity Violations 원자성 위반(Atomicity Violations)은 적절한 잠금 규칙을 준수하는 경우에도 발생할 수 있는 동시성 (concurrency) 버그 유형이다(공유 데이터에 액세스하거나 업데이트하는 동안 잠금이 일관되게 유지되는 경우). 보통 Atomic이어야 하는 업데이트가 결합될 때 동일한 잠금의 보호 하에 수행되지 않는 경우 발생한다. 원자성 위반 발생 가능 패턴들: 보호용 잠금 장치 획득 (a) 공유 상태에서 정보를 추출 (b) 잠금 해제 보호 (c) 정보를 기반으로 한 행동에 대한 약속 (d) S'를 보호하는 잠금 장치 획득 (e) 저장된 정보를 기반으로 한 공유 상태 S'에 대한 조치 (f) S'를 보호하는 잠금 해제 (g) 공유 상태로 업데이트되어 b)에서 .. 이전 1 2 3 4 5 6 다음 목록 더보기