<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Persistance_memory</id>
	<title>Persistance memory - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Persistance_memory"/>
	<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Persistance_memory&amp;action=history"/>
	<updated>2026-05-19T12:58:57Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=Persistance_memory&amp;diff=106&amp;oldid=prev</id>
		<title>Ahn9807: 새 문서: 분류: 스토리지 분류: 메모리  == 개요 == PMEM은 persistentance memory의 약자로 DRAM과 SSD에 중간에 위치하는 새로운 스토리지 계층을 의미한다. NVM (Non-volatile memory)혹은 Intel의 거의 독점적인 상표권을따서 Optane메모리라고 불리기도 한다. 기존 SSD보다 대략 1000배 정도 빠른 Latency를 이론적으로 확보할 수 있다.  Persistent memory를 이용하면 다음과 같은 장점이 있다. # Ca...</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Persistance_memory&amp;diff=106&amp;oldid=prev"/>
		<updated>2023-02-04T03:54:18Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80&quot; title=&quot;분류:스토리지&quot;&gt;분류: 스토리지&lt;/a&gt; &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:%EB%A9%94%EB%AA%A8%EB%A6%AC&quot; title=&quot;분류:메모리&quot;&gt;분류: 메모리&lt;/a&gt;  == 개요 == PMEM은 persistentance memory의 약자로 DRAM과 SSD에 중간에 위치하는 새로운 스토리지 계층을 의미한다. NVM (Non-volatile memory)혹은 Intel의 거의 독점적인 상표권을따서 Optane메모리라고 불리기도 한다. 기존 SSD보다 대략 1000배 정도 빠른 Latency를 이론적으로 확보할 수 있다.  Persistent memory를 이용하면 다음과 같은 장점이 있다. # Ca...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[분류: 스토리지]]&lt;br /&gt;
[[분류: 메모리]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
PMEM은 persistentance memory의 약자로 DRAM과 SSD에 중간에 위치하는 새로운 스토리지 계층을 의미한다. NVM (Non-volatile memory)혹은 Intel의 거의 독점적인 상표권을따서 Optane메모리라고 불리기도 한다. 기존 SSD보다 대략 1000배 정도 빠른 Latency를 이론적으로 확보할 수 있다.&lt;br /&gt;
&lt;br /&gt;
Persistent memory를 이용하면 다음과 같은 장점이 있다.&lt;br /&gt;
# [[Cache line]]에 맞는 크기로 정보를 가져오기 때문에 fine-grained (byte addressable)한 storage를 사용할 수 있다. 이는 data serialization에 소요되는 시간을 줄이거나 없앤다.&lt;br /&gt;
# DIMM에 직접 설치할 수 있기 때문에 PCIe에서 오는 성능저하가 없다.&lt;br /&gt;
# CPU가 load-store로 직접 접근할 수 있다.&lt;br /&gt;
# Driver, file system을 거치지 않고 직접 접근 가능하다.&lt;br /&gt;
# 최종적으로 영구적이며, latency가 적고, 높은 throughput을 기대할 수 있다.&lt;br /&gt;
&lt;br /&gt;
== Things to consider ==&lt;br /&gt;
# Data Persistence: CPU와 Memory간의 상관관계는 기존에는 Memory에 데이터가 유지되지 않기 때문에 persistent하지 않아도 괜찮았다. 그러나 Persistent메모리에서는 CPU cache와의 동기화로 인하여 메모리에 persistent한 데이터를 유지하는 것이 매우 중요해 졌다.&lt;br /&gt;
# Data Consistency: x86에서 Atomic의 최소단위는 8 byte이다. 즉 8바이트 write에서 데이터는 Atomic하게 작성된다. 그러나 이 8바이트보다 큰 데이터들은 transaction하기 위해서 logging/recovery 방식이 필요해진다. 즉 Data consistency를 위해선 기존 파일 시스템의 저널링처럼 무언가 추가적인 방법이 필요해지는 것이다. &lt;br /&gt;
# Memory Leak: 만약 Persistent메모리에 Leak이 발생하면 기존의 시스템처럼 재부팅하는 것으로 해결할 수 없다. persistent memory의 leak은 역시 마찬가지로 memory leak이 된다. &lt;br /&gt;
# Byte Level Access: Application개발자들은 Stroage Block size에 맞추어서 쓸 필요가 없어진다. 즉 Performance향상과 Memory footprint들을 줄일 수 있다.&lt;br /&gt;
# Error handling: Storage의 Error은 Memory error로 사용자에게 전달된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Finding ===&lt;br /&gt;
# FH1: Read/Write 속도가 DRAM과 달리 다르다. 즉 Write이 Read보다 느리다.&lt;br /&gt;
# FH2: Write이 Latency가 크고 Bandwidth가 작기 떄문에 bottleneck이 된다.&lt;br /&gt;
# FH3: Sequential NVM access는 이러한 단점을 커버한다. (Sequential read가 random read보다 빠르다.)&lt;br /&gt;
# FH4: Persistence를 지키는 것은 cache line invalidation, flushing을 일으키기 때문에 생각보다 느리다.&lt;br /&gt;
# FH5: Cache coherence protocol은 NUMA머신의 scalability를 방해한다. 이는 [[Directory coherence protocol]]에서 기원하는데, directory write이 느린 NVM속도때문에 더욱 과장되어 보이기 때문이다. &lt;br /&gt;
&lt;br /&gt;
=== Guidelines for NVM Systems Software ===&lt;br /&gt;
# GS1: Crash consistency operations들을 자주 사용하는 것은 큰 write overhead를 부르기 때문에 속도 저하의 주범이 된다. 따라서 Memory allocation, 혹은 write과 같은 NVM state를 바꾸는 작업들은 NVM lag + Crash consistency를 위한 속도 저하를 극복해야 한다. &lt;br /&gt;
# GS2: Persistent memory allocation은 NUMA장치를 신경써서 작성해야 한다. 이는 NUMA장치에서 write lag가 더욱 크게 보이기 때문이다.&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for Persistent Index Algorithm ===&lt;br /&gt;
# GA1: Lookup operation은 대다수의 IO operation을 차지하는 경향이 있는데, 이 Lookup operation을 효율적으로 작성하여 NVM의 read latency가 보이지 않도록 하여야 한다.&lt;br /&gt;
# GA2: Lookup 그리고 Scan operation은 Read를 하게 되는데, 이는 Directory cache protocol의 사용을 만들어서 NVM에 특정 write log을 시키기도 한다. 이러한 write lag에서 오는 속도저하도 무시할 수 없다. &lt;br /&gt;
# GA3: Write operation을 위하여 자주 NVM allocation하게 되면 Atomic allocate를 위한 logging에 대한 lag가 심해짐으로 latency가 커질 수 있다. 즉 최대한 NVM memory allocation을 하는 횟수를 줄여야 한다. &lt;br /&gt;
# GA4: Persistent write operation의 수를 줄여야 한다. 즉 logging위하여 저장되어야 하는 필수적인 요소의 수를 줄여야 한다.&lt;br /&gt;
# GA5: Scan operation과 같은 경우에는 Sequential하게 실행되어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== Guidelines for Concurrency Control ===&lt;br /&gt;
# GC1: Concurrent access를 통해서 NVM에 대한 다중접근이 가능하도록 하여야 한다.&lt;br /&gt;
# GC2: NVM에 저당되는 자료구조에서 Strutural modification operation즉 merge나 split에 드는 시간을 줄여야 한다. 이는 이러한 연산이 필연적으로 Blocking이라는 점에서 기인하는데 이는 NVM에서 DRAM보다 더욱 두드러진 성능저하의 요소로 보이게 된다. &lt;br /&gt;
# GC3: NVM은 저장하는 단위가 큰 만큼, persistent memory에서 data 사이즈로 인한 성능저하가 있으면 안된다. 예를 들어서 cache size보다 큰 데이터의 경우에는 cache miss를 지속적으로 부를 수 있는데, NVM에서는 이러한 성능저하가 더욱 큼으로 신경써서 작업해야 한다.&lt;br /&gt;
&lt;br /&gt;
요약 하자면, write/read 가 느리기 때문에 효율적으로 접근해야 하고, consistency를 유지하기 위한 비용이 비싸며, 이러한 performance down은 특히 NUMA머신에서 심하게 일어난다, 로 정리할 수 있다. &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
# [[PMDK]]&lt;br /&gt;
# [[PACTree]]&lt;/div&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
</feed>