영구 메모리

Persistent memory

컴퓨터 과학에서 영구 메모리는 데이터 구조를 생성하거나 마지막으로 수정한 프로세스가 종료된 후에도 메모리 명령서나 메모리 API를 사용하여 계속 액세스할 수 있도록 데이터 구조를 효율적으로 저장하는 모든 방법이나 장치다.[1]

종종 비휘발성 RAM(Non-Volatile Random-Access Memory, NVRAM)과 혼동되는 영구 메모리는 대신 그것을 만든 프로세스의 결함 영역 밖에 존재하는 프로그램 상태를 강조하는 지속성의 개념과 더 밀접하게 연계된다.(프로세스는 실행 중인 프로그램이다.프로세스의 오류 영역은 예를 들어 프로그램을 실행하는 컴퓨터에서 사용되는 신뢰할 수 없는 구성 요소로 인해 오류가 발생한 후 계속 실행되는 프로세스에 의해 손상될 수 있는 프로그램 상태의 하위 집합이다.)

효율적이고 메모리 같은 액세스는 영구 메모리의 정의적 특성이다.[2]부하 및 저장과 같은 마이크로프로세서 메모리 지침을 사용하여 제공할 수 있다.RDMA 읽기, RDMA 쓰기 등 RDMA(Remote Direct Memory Access) 동작을 구현하는 API를 활용해 제공할 수도 있다.바이트 그레이에[clarification needed] 데이터에 대한 액세스를 허용하는 다른 낮은 지연 시간 방법 또한 적합하다.

저장된 비트의 비볼리티 이상으로 확장되는 지속적인 메모리 기능예를 들어, 페이지 테이블 항목이나 가상 주소를 물리적 주소로 변환하는 기타 구성과 같은 키 메타데이터가 손실되면 내구성이 뛰어난 비트가 영구성이 될 수 있다.이 점에서 영구 메모리는 파일 시스템과 같은 보다 추상적인 형태의 컴퓨터 저장장치와 유사하다.실제로 거의 모든 기존의 영구 메모리 기술은 적어도 이름이나 식별자를 저장된 익스텐트와 연결하는데 사용할 수 있는 기본적인 파일 시스템을 구현하며, 최소한 그러한 익스텐트의 명명과 할당에 사용할 수 있는 파일 시스템 방법을 제공한다.

비영구적 쓰기 읽기 문제

영구 메모리의 잠금 없는 프로그램에서 비영구 쓰기 읽기 문제가 발견됨.비교-스왑(CAS) 연산은 영구 메모리에 대한 쓰기 값을 유지하지 못하므로, 수정된 데이터를 영구 메모리에서 충돌 관찰자가 관찰하기 전에 동시 관찰자에 대한 캐시 일관성 프로토콜에 의해 볼 수 있다.쓰기가 가시화되었지만 아직 지속되지 않은 직후에 전원 장애가 발생하면 비지속성-쓰기 읽기 문제가 발생할 수 있다. 즉, CAS에 의해 수정된 데이터 변수를 충돌 관찰자 이전에 동시 관찰자에게 보여서 잠재적 충돌 불일치를 야기할 수 있다.

문제를 설명하기 위해, 단일 링크된 잠금 없는 목록의 경우, 헤드 노드의 Next pointer가 헤드 노드 다음에 생산자 스레드 A에 의해 삽입될 수 있으며, 헤드 노드의 Next pointer는 새로운 노드 A를 가리키도록 원자적으로 전환(CAS)되지만, 이 CAS는 유지되지 않는다.그리고 나서, 노드 A에 대한 CAS가 모든 동시 스레드에 이미 보이므로, 또 다른 노드는 노드 A 다음에 프로듀서 스레드 B에 의해 삽입된다.CAS는 원자적으로 노드 A의 Next 포인터를 노드 B를 가리키도록 전환하고, 이 CAS는 유지된다.이 시점에서 전원 장애가 발생하면 헤드 노드에서 노드 A로 이어지는 Next 포인터가 유지되지 않았기 때문에 연결된 목록을 사용하는 애플리케이션은 노드 A와 노드 B가 모두 손실된 상태로 유지될 것이다.노드 B가 게시되었지만 재부팅한 후에는 액세스할 수 없고, 노드 B를 통해 액세스되거나 종속된 다른 데이터가 유지되었을 수 있으므로, 이러한 데이터에 대한 후속 액세스가 모두 불가능하여 데이터 손실이 발생할 수 있다.[3]

비영구적 쓰기 읽기 문제는 잠금 없는 링크된 목록에만 국한되지 않으며 동시 가시성과 영구 가시성 사이의 잠재적 차이가 존재할 수 있는 잠금 없는 데이터 구조에서 찾을 수 있다.예를 들어, 유사한 문제가 지속되는 원형 버퍼에서도[4] 발생할 수 있다.

참고 항목

참조

  1. ^ 사티쉬 M.1986년 테.영구 메모리: 객체 지향 데이터베이스 시스템을 위한 스토리지 아키텍처.1986년 오브젝트 지향 데이터베이스 시스템에 관한 국제 워크숍(OODS '86)에서.IEEE 컴퓨터 소사이어티 프레스, 로스 알라미토스, CA, 미국, 148-159.
  2. ^ P. 메헤라와 S.Fineberg, "빠르고 유연한 지속성: 온라인 데이터 저장소의 내결함성, 확장성 및 성능에 대한 마법의 물약," 제18회 국제 병렬 및 분산 처리 심포지엄, 2004.절차, 산타페, NM, 미국, 2004, 페이지 206-. 도이: 10.1109/IPDPS.2004.13032
  3. ^ Wang, William; Diestelhorst, Stephan (June 17, 2019). "Persistent Atomics for Implementing Durable Lock-Free Data Structures for Non-Volatile Memory (Brief Announcement)". The 31st ACM Symposium on Parallelism in Algorithms and Architectures. Association for Computing Machinery. pp. 309–311. doi:10.1145/3323165.3323166. ISBN 9781450361842. S2CID 195064876 – via ACM Digital Library.
  4. ^ Wolczko, Mario (April 26, 2019). "Non-Volatile Memory and Java: Part 2". Medium.

외부 링크