KR100772196B1 - Pci 메모리를 이용한 무복사 캐싱 방법 및 그 장치 - Google Patents

Pci 메모리를 이용한 무복사 캐싱 방법 및 그 장치 Download PDF

Info

Publication number
KR100772196B1
KR100772196B1 KR1020060079504A KR20060079504A KR100772196B1 KR 100772196 B1 KR100772196 B1 KR 100772196B1 KR 1020060079504 A KR1020060079504 A KR 1020060079504A KR 20060079504 A KR20060079504 A KR 20060079504A KR 100772196 B1 KR100772196 B1 KR 100772196B1
Authority
KR
South Korea
Prior art keywords
pmem
list
entry
user program
pci memory
Prior art date
Application number
KR1020060079504A
Other languages
English (en)
Other versions
KR20070059909A (ko
Inventor
석성우
김갑동
김학영
김명준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Publication of KR20070059909A publication Critical patent/KR20070059909A/ko
Application granted granted Critical
Publication of KR100772196B1 publication Critical patent/KR100772196B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 PCI 메모리(PMEM)를 이용한 무복사 캐싱 방법 및 그 장치에 관한 것으로서, 본 발명에 따른 PCI 메모리를 이용한 무복사 캐싱 장치는 하나의 PCI 메모리 블럭을 두 개의 사용자 프로그램이 각각의 주소 영역에 매핑하고, PCI 메모리 블록을 사용하여 캐싱을 수행할 때 참조하는 캐시 리스트 및 비 캐시 리스트를 관리하는 PCI 메모리 제어부; 및 사용자 프로그램의 현재 사용여부를 관리하는 사용중 리스트(in-use list)와 프리 리스트(free list)의 데이터 베이스를 관리하는 사용자 프로그램 제어부를 포함한다. 따라서, PCI 메모리블록에 적재된 데이터를 사용자가 덮어쓰거나 다른 용도로 사용하기 전까지는 계속 데이터를 유지하면서 사용자 프로그램의 읽기 요청이 현재 PCI 메모리 블록에 적재된 디스크 블록에 대한 것일 경우에 디스크 접근 없이 PCI 메모리 블록을 재매핑(re-mapping)하여 처리함으로써 응답속도가 개선된다.
네트워크 스토리지 카드, 스마트 서버, PMEM, NC

Description

PCI 메모리를 이용한 무복사 캐싱 방법 및 그 장치 {Apparatus and method for zero-copy cashing using PCI Memory}
도 1은 사용자 프로그램에서 PMEM 영역을 할당할 때 메모리 매핑 구조를 보여주는 도면,
도 2는 본 발명에 따라 두 사용자 프로그램이 하나의 PMEM 블록을 공유하는 것을 보여주는 도면,
도 3은 본 발명을 구현하기 위한 캐시 리스트와 비 캐시 리스트간의 이동에 관한 도면,
도 4는 본 발명을 구현하기 위한 사용중 리스트와 프리 리스트 간의 이동에 관한 도면,
도 5는 본 발명에 따라 사용자 프로그램이 PMEM 할당을 요청할 경우에 관한 흐름도,
도 6은 본 발명에 따라 사용자 프로그램에서 PMEM 할당 해제를 요청할 경우에 관한 흐름도,
도 7은 본 발명에 따라 사용자 프로그램이 PMEM을 사용하여 디스크 블록 읽기를 요청할 경우에 관한 흐름도.
도 8은 본 발명에 의한 무복사 캐싱 장치의 구성도.
*도면의 주요부분에 대한 부호의 간단한 설명*
301 : 캐시 리스트 302 : 비캐시 리스트
401 : 사용중 리스트 402 : 프리 리스트
본 발명은 스마트 서버 시스템에 관한 것으로서, 더욱 상세하게는 PCI 메모리를 이용한 무복사 캐싱 방법 및 그 장치에 관한 것이다.
네트워크의 고속화와 다양한 멀티미디어 단말의 등장에 따라 멀티미디어 스트리밍 서비스에 대한 요구가 증가하고 있다. 이에 따라 멀티미디어 데이터를 저장하고 스트리밍하는 멀티미디어 스트리밍 전용 서버에 요구되는 성능도 높아지고 있다. 멀티미디어 스트리밍의 성능을 향상시키기 위하여 하드웨어 및 소프트웨어 측면에서 여러 가지 연구가 진행되고 있다. 하드웨어 부문에서는 멀티미디어 데이터를 저장하는 디스크장치의 입출력 속도를 향상시키기 위하여 다양한 방법의 디스크 어레이 및 캐시 장치, 그리고 입출력 장치가 연구되고 있다.
이 분야의 종래 기술로서"네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기 위한 네트워크-스토리지 연결 장치"에 관한 기술이 대한민국 특허 공개번호 제2004-0056309호에 개시되어 있다.
상기 선행특허의 네트워크 스토리지 카드는 디스크 입출력 속도 및 네트워크 전송 속도를 향상시키기 위한 노력의 하나로써, 하나의 PCI (Peripheral Component Interconnect: 이하, 'PCI'라 칭함) 카드에 디스크 입출력 장치, 네트워크 컨트롤러, 메모리를 집적하여 디스크의 데이터를 네트워크로 전송시 무복사 전송을 할 수 있도록 고안되었다.
또한 선행특허에서는 네트워크 스토리지 카드 상의 메모리인 PCI 메모리(PCI MEMory, 이하 'PMEM'이라 칭함)을 사용자 프로그램에서 사용할 때 사용자 프로그램이 PMEM 블록을 할당받는 방법을 개시하고 있다. 좀 더 상세하게는 네트워크 스토리지 카드의 PMEM은 물리적인 PCI 주소를 가지는 메모리로써 사용자 프로그램에서 할당을 요청하면, 사용자 메모리 영역에 매핑을 함으로써 사용자 프로그램에서 접근할 수 있게 된다. 할당된 PMEM 블록은 할당해제를 수행하기 전까지는 동일한 PMEM 블록을 사용하고, 상기 할당된 PMEM 블록을 다른 응용프로그램에서는 사용할 수 없도록 되어 있다.
도 1은 사용자 프로그램에서 PMEM 영역을 할당할 때 메모리 매핑 구조를 보여주는 도면이다.
PMEM(101)은 PCI 주소 영역을 가지는 메모리 공간이다. 사용자 프로그램 측 주소 영역(102,103)으로부터 PMEM 할당이 요청되면, PMEM(101)의 임의 블록을 사용자 메모리 공간(102,103)에 매핑해준다. 상기와 같은 PMEM 할당이 완료되면 사용자 프로그램은 해당 PMEM 블록을 사용하여 무복사로 디스크 입출력을 수행할 수 있다.
기존의 선행특허에서는 한 사용자 프로그램에 할당된 PMEM 블록을 배타적으로 사용하였기 때문에 다른 사용자 프로그램은 해당 PMEM 블록에 접근할 수 없었 다.
따라서 복수의 응용프로그램에서 각각 PMEM 블록을 할당하여 동일한 디스크 블록을 읽어들일 경우, 디스크 입출력이 요청의 회수에 따라 수행되어야 한다. 만약 한 PMEM 블록을 복수의 사용자 프로그램이 공유할 수 있거나 캐싱을 지원한다면 디스크 입출력은 한번만 수행하면 되는데 비하여 디스크 입출력 대역폭의 낭비가 발생한다. 또한, 동일한 데이터를 여러 PMEM 블록에 저장하므로써 PMEM의 공간을 낭비하는 문제점이 있다.
본 발명은 이러한 문제점을 해결하기 위한 것으로, 본 발명의 목적은 PMEM을 이용한 캐싱을 제공하여 디스크 입출력 성능을 개선하고, 캐싱된 데이터에 대해서는 응답속도를 향상시키며, 복수의 사용자 프로그램이 동일한 디스크 데이터를 사용할 경우에는 동일한 PMEM 영역을 공유하도록 하는 PCI 메모리를 이용한 무복사 캐싱 방법 및 그 장치를 제공하는데 있다.
이러한 목적을 달성하기 위한 본 발명의 제 1 측면에 따른 PCI 메모리를 이용한 무복사 캐싱 방법은 스마트 서버 시스템의 사용자 프로그램이 PCI 메모리(PMEM) 할당을 요청하는 방법에 있어서, 사용자 프로그램에서 PMEM 할당을 요청 하면 프리 리스트가 비었는지 판단하는 단계; 프리 리스트가 비어 있지 않은 것으로 판단되면, 첫 번째 엔트리부터 비캐시 리스트에 속하는지를 검색하는 단계; 및 현재 검색된 엔트리가 비캐시 리스트에 속하는 엔트리인 것으로 판단되면, 해당 PMEM 블록을 사용중 리스트로 이동하고 사용자 프로그램의 주소영역에 매핑하는 단계를 포함한다.
상기 프리 리스트가 비었는지 판단하는 단계 이후, 프리 리스트가 비어있는 것으로 판단되면 메모리 할당 실패 리턴 처리하여 알고리즘을 종료함을 특징으로 한다.
또한 현재 검색된 엔트리가 비캐시 리스트에 속하는 엔트리가 아닌 것으로 판단되면, 다음 엔트리로 이동하여 다음 엔트리가 비캐시 리스트에 속하는지를 판단하는 단계; 프리 리스트를 끝까지 검색하여, 비캐시 리스트에 속하는 엔트리가 존재하지 않을 경우, 캐시 리스트의 LRU(Least Recently Used) 엔트리를 검색하여 프리 리스트에 속하는 엔트리가 하나라도 존재하는지를 판단하는 단계; 및 프리 리스트에 속하는 엔트리이면, 해당 엔트리를 비캐시 리스트로 이동하는 단계를 포함한다.
상기의 목적을 달성하기 위한 본 발명의 제 2 측면에 따른 스마트 서버 시스템의 사용자 프로그램이 PCI 메모리(PMEM)의 할당해제를 요청하는 방법에 있어서, 현재 참조회수가 0보다 큰지 같은지를 판단하는 단계; 큰 것으로 판단되면 다른 사용자 프로그램이 사용하고 있는 상태이므로 참조회수를 줄이고, 호출한 사용자 프로그램의 메모리 매핑을 제거하는 단계; 참조회수가 0인 것으로 판단되면 사용하 는 프로그램이 없는 것이므로 해당 PMEM 블록을 프리 리스트로 이동하고 메모리 매핑을 제거하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 제 3 측면에 따른 PCI 메모리를 이용한 무복사 캐싱 방법은, 스마트 서버 시스템의 사용자 프로그램이 PCI 메모리(PMEM)를 사용하여 디스크 블록 읽는 방법에 있어서, 요청된 디스크 블록을 캐시 리스트에서 검색하여 캐시 리스트에 존재하는지를 판단하는 단계; 캐시 리스트에 디스크 블록이 존재하는 것으로 판단되면, 해당 엔트리가 사용중 리스트에 속하는지를 판단하는 단계; 해당 엔트리가 사용중 리스트에 속하면, 참조회수를 1 증가시키는 단계; 해당 엔트리를 캐시 리스트의 MRU로 이동하는 단계; 및 사용자 프로그램에서 할당받은 PMEM 블록을 할당 해제하는 단계를 포함한다.
상기 단계에서 캐시 리스트에 디스크 블록이 존재하지 않는 것으로 판단되면, 디스크 읽기를 수행한 후, 해당 PMEM 블록을 캐시 리스트의 MRU에 이동하여 삽입하는 단계를 더 수행함을 특징으로 한다.
상기의 목적을 달성하기 위한 본 발명의 제 4 측면에 따른 PCI 메모리를 이용한 무복사 캐싱 장치는 스마트 서버 시스템의 사용자 프로그램이 PCI 메모리(PMEM) 할당을 요청하는 장치에 있어서, 하나의 PCI 메모리를 두 개의 사용자 프로그램이 각각의 주소 영역에 매핑하고, PMEM 블록을 사용하여 캐싱을 수행할 때 참조하는 캐시 리스트 및 비 캐시 리스트를 관리하는 PCI 메모리 제어부; 및 사용자 프로그램의 현재 사용여부를 관리하는 사용중 리스트(in-use list)와 프리 리스트(free list)의 데이터 베이스를 관리하는 사용자 프로그램 제어부를 포함한다.
상기 PCI 메모리 제어부는 디스크 데이터가 적재되어 있는 PMEM은 캐시 리스트에 연결하고, 디스크 데이터가 없거나 올바르지 않은 경우에는 디스크 데이터를 비 캐시 리스트에 연결하는 것을 특징으로 한다.
상기 사용자 프로그램 제어부는 사용자 프로그램이 할당되어 이미 사용중인 PMEM 블록은 사용중 리스트에 연결하고, 사용중이지 않은 PMEM 블록은 프리 리스트에 연결한다.
상기 PCI 메모리를 이용한 무복사 캐싱 장치는 PMEM 블록에 적재된 데이터가 갱신되기 전까지는 데이터를 유지하면서 사용자 프로그램의 읽기 요청이 현재 PMEM에 적재된 디스크 블록에 대한 것일 경우에, 디스크 접근 없이 PMEM 블록을 재매핑(re-mapping)한다. 또한 상기 PCI 메모리를 이용한 무복사 캐싱 장치는 동일한 데이터 블록에 대해서는 동일한 PMEM 영역을 복수의 사용자 프로그램에서 공유하도록 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다.
본 발명은 현재 PMEM에 적재되어 있는 디스크 데이터에 대해 다른 사용자 프로그램이 읽기를 요청할 경우, 디스크에서 읽지 않고 해당 PMEM 블록을 사용자 프로그램의 해당 가상 주소 영역에 매핑함으로써 디스크 입출력 응답속도를 향상시키고 디스크 입출력 대역폭의 낭비를 막는다. 또한 동일한 PMEM 영역을 공유함으로써 PMEM 공간의 사용량을 줄인 것이다.
도 2는 본 발명에 따라 두 사용자 프로그램이 하나의 PMEM 영역을 공유하는 개념을 보여주는 도면이다.
하나의 PMEM 블록(201)을 두 개의 사용자 프로그램이 각각의 주소 영역에 매핑함으로써 공유하고 있다.
본 발명은 상기와 같이 PMEM 블록을 사용하여 캐싱을 수행하기 위하여 PMEM 관리 구조체에 2 개의 리스트 엔트리를 추가하였다.
하나는 캐싱 데이터의 유무에 따라 관리되는 캐시 리스트(cashed list)와 비 캐시 리스트(non-cashed list)에서 사용되고, 또 다른 하나는 사용자 프로그램의 현재 사용여부에 따라 관리되는 사용중 리스트(in-use list)와 프리 리스트(free list)에서 사용된다.
즉, 디스크 데이터가 적재되어 있는 PMEM 블록은 캐시 리스트에 연결되고, 디스크 데이터가 없거나 올바르지 않은 경우에는 비 캐시 리스트에 연결되고, 사용자 프로그램이 할당되서 사용중인 PMEM 블록은 사용중 리스트에 연결되고 사용중이지 않은 PMEM 블록은 프리 리스트에 연결된다.
도 3은 본 발명에 따른 캐시 리스트와 비 캐시 리스트간의 이동에 관한 도면이다. 도 3을 참조하면 최초 동작시에 모든 PMEM 블록이 아무런 디스크 데이터를 가지고 있지 않으므로 비캐시 리스트(302)에 연결되어 있게 된다. 이후, 임의의 사용자 프로그램에서 PMEM 블록을 할당하여 디스크 데이터를 읽으면 해당 PMEM 블록들은 캐시 리스트(301)의 MRU(Most Recently Used)로 삽입된다. 또한 파일 시스템에서 프리페치를 수행하면 그 PMEM 블록도 캐시 리스트(301)의 MRU로 삽입된다.
캐시 리스트(301)에 존재하는 PMEM 블록이 적재하고 있는 디스크데이터가 변경되는 경우, 해당 PMEM 블록은 비캐시 리스트(302)로 옮겨진다.
도 4는 본 발명에 따른 사용중 리스트와 프리 리스트 간의 이동을 설명하는 도면이다. 도 4를 참조하면, 최초 시작시에는 모든 PMEM 블록이 사용자 프로그램에 할당되지 않은 상태이므로 프리 리스트(402)에 연결된다.
이후 사용자 프로그램이 할당을 요청하면 먼저 프리 리스트(402)에서 비캐시 리스트(302)에 속하는 PMEM 블록을 사용자 프로그램의 주소영역에 매핑하고 사용중 리스트(401)로 이동시킨다.
만약 비캐시 리스트(302)에 속하는 PMEM 블록이 검색되지 않으면 캐시 리스트(301)의 LRU(Least Recently Used) 쪽에서부터 프리 리스트(402)에 속하는 PMEM을 검색하여 사용중 리스트(401)로 옮기고, 캐시리스트(301)에서 비캐시 리스트(301)로 옮긴 뒤 해당 PMEM 블록을 사용자 프로그램에 매핑한다.
한편 프리 리스트(402)가 비어 있다면 할당할 수 있는 PMEM 블록이 없는 것이므로 할당 오류를 리턴한다.
이후 사용자 프로그램이 PMEM 블록의 할당을 해제하면 해당 PMEM 블록을 프리 리스트(402)로 옮긴다.
도 5는 본 발명에 따라 사용자 프로그램이 PMEM 할당을 요청할 경우에 관한 흐름도이다.
도 5를 참조하면, 사용자 프로그램에서 PMEM 할당을 요청하면 프리 리스트가 비었는지 판단하여(S102), 비어있는 것으로 판단되면 오류이므로 할당 오류를 리턴 한 후(S103) 알고리즘을 종료한다.
상기 S102에서 프리 리스트가 비어 있지 않은 것으로 판단되면, 프리 리스트의 첫 번째 엔트리부터 해당 PMEM 블록이 비캐시 리스트에 속하는지를 검색한다(S104).
상기 S104 검색 도중에 비캐시 리스트에 속하는 PMEM 블록이 연결된 엔트리가 존재하는지를 판단하여(S106), 판단결과 비캐시 리스트에 속하는 엔트리가 존재하면, 현재 검색된 엔트리가 비캐시 리스트에 속하는 엔트리인지를 비교 판단한다(S108).
상기 S108에서 현재 검색된 엔트리가 비캐시 리스트에 속하는 엔트리가 아닌 것으로 판단되면, 다음 엔트리로 이동하여(S109) 비캐시 리스트에 속하는지를 판단한다(S106).
반대로 상기 S108에서 현재 검색된 엔트리가 비캐시 리스트에 속하는 엔트리인 것으로 판단되면, 해당 PMEM 블록을 사용중 리스트로 이동하고 사용자 프로그램의 주소영역에 매핑한다(S110). 이후, 매핑된 가상 주소를 리턴한 후 종료한다(S112).
상기 S104에서 프리 리스트를 끝까지 검색했으나, 비캐시 리스트에 속하는 엔트리가 존재하지 않을 경우(S106), 캐시 리스트의 LRU 엔트리를 검색하여(S107), 프리 리스트에 속하는 엔트리가 하나라도 존재하는지를 판단한다(S111).
상기 판단 결과, 프리 리스트에 속하는 엔트리가 존재하면(S113), 해당 엔트리를 비캐시 리스트로 이동한다(S115). 이후 프리 리스트에서 사용중 리스트로 이 동한 후(S110), 사용자 응용프로그램의 주소 영역에 매핑하고 매핑된 가상 주소를 리턴하고 종료한다(S112).
상기 단계 S113에서 현재 엔트리가 프리 리스트에 속하는 엔트리가 아니면, 다음 엔트리로 이동하여(S114) 계속하여 프리 리스트에 속하는 엔트리가 발견될 때 까지 검색하도록 한다.
S111 검색 결과 캐시 리스트에서 프리 리스트를 발견하지 못한다면, 리스트 관리 오류로서 오류를 리턴하고 종료한다(S103).
도 6은 본 발명에 따라 사용자 프로그램에서 PMEM 할당 해제를 요청할 경우에 관한 흐름도이다. 도 6을 참조하면, 사용자 프로그램이 PMEM의 할당해제를 요청할 때 현재 참조회수가 0보다 큰지 같은 지를 판단하여(S202), 큰 것으로 판단되면 다른 사용자 프로그램이 사용하고 있는 상태이므로 참조 회수를 1회 감소시키고(S204) 호출한 사용자 프로그램의 메모리 매핑을 제거한 후(S206) 종료한다.
상기 단계 S202에서 참조회수가 0인 것으로 판단되면 사용하는 프로그램이 없는 것이므로 해당 PMEM 엔트리를 프리 리스트로 이동하고(S205) 메모리 매핑을 제거한 후(S206) 종료한다.
도 7은 본 발명에 따라 사용자 프로그램이 PMEM을 사용하여 디스크 블록 읽기를 요청할 경우에 관한 흐름도이다. 도 7을 참조하면, 요청된 디스크 블록을 캐시 리스트에서 검색해서(S302) 캐시 리스트에 존재하는지를 판단한다(S304).
S304에서 캐시 리스트에 디스크 블록이 존재하지 않는 것으로 판단되면 디스크 읽기를 수행한 후(S305), 해당 PMEM 엔트리를 캐시 리스트의 MRU에 이동하여 삽 입한다(S309).
S304에서 캐시 리스트에 디스크 블록이 존재하는 것으로 판단되면, 해당 PMEM 엔트리가 사용중 리스트에 속하는지를 판단한다(S306). 해당 PMEM 엔트리가 사용중 리스트에 속하면, 참조회수를 1 증가시킨다(S308).
해당 PMEM 엔트리를 캐시 리스트의 MRU로 이동하고(S310), 사용자 프로그램에서 할당받은 PMEM을 할당 해제한다(S312).
이후, 캐시 리스트에서 발견된 PMEM을 사용자 프로그램의 해당 메모리 주소로 매핑하고(S314) 종료한다. 캐시 리스트에서 발견된 PMEM 엔트리가 프리 리스트에 존재할 경우에는 참조회수를 증가시키지 않고 PMEM을 사용중 리스트로 이동한다(S307).
도 8은 상술한 본 발명에 의한 PCI 메모리를 이용한 무복사 캐싱 방법을 적용한 장치(이하, 무복사 캐싱 장치라 함)를 나타낸 기능 블록도이다.
상기 도 8의 무복사 캐싱 장치는 스마트 서버 시스템의 사용자 프로그램이 PCI 메모리(PMEM)의 할당/해지 및 디스크 읽기 처리를 수행하는 장치에 적용되는 것으로서, 하나의 PCI 메모리를 두 개의 사용자 프로그램이 각각의 주소 영역에 매핑하고, PMEM 블록을 사용하여 캐싱을 수행할 때 참조하는 캐시 리스트(301) 및 비 캐시 리스트(302)를 관리하는 PCI 메모리 제어부(300)와, 사용자 프로그램의 현재 사용여부를 관리하는 사용중 리스트(in-use list)(401)와 프리 리스트(free list)(402)를 관리하는 사용자 프로그램 제어부(400)를 포함한다.
상기 PCI 메모리 제어부(300)는, 디스크 데이터가 적재되어 있는 PMEM은 캐 시 리스트(301)에 연결하고, 디스크 데이터가 없거나 올바르지 않은 경우에는 디스크 데이터를 비 캐시 리스트(302)에 연결하고, 상기 사용자 프로그램 제어부(400)는, 사용자 프로그램이 할당되어 이미 사용중인 PMEM은 사용중 리스트(401)에 연결하고, 사용중이지 않은 PMEM 은 프리 리스트(402)에 연결한다. 또한, 상기 사용자 프로그램 제어부(400)는 PMEM에 적재된 데이터가 갱신되기 전까지는 데이터를 유지하면서 사용자 프로그램의 읽기 요청이 현재 PMEM에 적재된 디스크 블록에 대한 것일 경우에, 디스크 접근 없이 PMEM을 재매핑(re-mapping)함으로써, 동일한 데이터 블록 대해서는 동일한 PMEM을 복수의 사용자 프로그램에서 공유하여 사용할 수 있도록 한다.
이상 본 발명에 대하여 그 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시켜 실시할 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 앞으로의 실시예들의 변경은 본 발명의 기술을 벗어날 수 없을 것이다.
이상 설명한 바와 같이, 본 발명에 따르면 PMEM에 적재된 데이터를 사용자가 덮어쓰거나 다른 용도로 사용하기 전까지는 계속 데이터를 유지하면서 사용자 프로그램의 읽기 요청이 현재 PMEM에 적재된 디스크 블록에 대한 것일 경우에 디스크 접근 없이 PMEM을 재매핑(re-mapping)하여 처리함으로써 응답속도가 개선된다.
따라서 실제 디스크 입출력의 양이 줄어 들게되어 디스크 입출력 대역폭의 낭비가 줄어드는 효과가 있다.
또한 동일한 데이터 블록 대해서는 동일한 PMEM을 복수의 사용자 프로그램에서 공유할 수 있으므로 PMEM 공간의 낭비를 절감하는 효과도 얻을 수 있다.

Claims (11)

  1. 스마트 서버 시스템의 사용자 프로그램을 위한 PCI 메모리를 이용한 무복사 캐싱 방법에 있어서,
    사용자 프로그램에서 PMEM 할당을 요청하면 사용자 프로그램에서 사용되지 않은 PMEM 엔트리를 관리하는 프리 리스트가 비었는지 판단하는 단계;
    상기 프리 리스트가 비어 있지 않은 것으로 판단되면, 상기 프리리스트에 속하는 첫 번째 PMEM 엔트리부터 디스크가 적재되어 있지 않는 PMEM 엔트리를 관리하는 비캐시 리스트에 속하는지를 검색하는 단계; 및
    현재 검색된 PMEM 엔트리가 비캐시 리스트에 속하는 엔트리인 것으로 판단되면, 해당 PMEM 엔트리를 사용자 프로그램에서 사용되는 PMEM 엔트리를 관리하는 사용중 리스트에 등록하고, 상기 할당을 요청한 사용자 프로그램의 주소영역에 매핑하는 단계를 포함하는 PCI 메모리를 이용한 무복사 캐싱 방법.
  2. 제1 항에 있어서, 상기 프리 리스트가 비었는지 판단하는 단계 이후,
    프리 리스트가 비어있는 것으로 판단되면 할당 오류를 리턴 처리하여 알고리즘을 종료함을 특징으로 하는 PCI 메모리를 이용한 무복사 캐싱 방법.
  3. 제1 항에 있어서, 현재 검색된 엔트리가 비캐시 리스트에 속하는 엔트리가 아닌 것으로 판단되면,
    다음 PMEM 엔트리로 이동하여 다음 엔트리가 비캐시 리스트에 속하는지를 판단하는 단계;
    프리 리스트를 끝까지 검색하여, 비캐시 리스트에 속하는 엔트리가 존재하지 않을 경우, 디스크가 존재하는 PMEM 엔트리를 관리하는 캐시 리스트의 LRU(Least Recently Used) 엔트리를 검색하여 프리 리스트에 속하는 엔트리가 하나라도 존재하는지를 판단하는 단계; 및
    프리 리스트에 속하는 엔트리이면, 해당 엔트리를 비캐시 리스트로 이동하는 단계를 포함하는 PCI 메모리를 이용한 무복사 캐싱 방법.
  4. 스마트 서버 시스템의 사용자 프로그램을 위한 PCI 메모리를 이용한 무복사 캐싱 방법에 있어서,
    할당 해제가 요청된 PMEM 엔트리의 현재 참조회수가 0보다 큰지 같은지를 판단하는 단계;
    상기 판단 결과 0보다 큰 것으로 판단되면 다른 사용자 프로그램이 사용하고 있는 상태이므로 참조회수를 줄이고, 상기 할당 해제를 요청한 사용자 프로그램의 메모리 매핑을 제거하는 단계;
    상기 판단결과 참조회수가 0인 것으로 판단되면 사용하는 프로그램이 없는 것이므로 해당 PMEM 엔트리를 사용자 프로그램에서 사용되지 않은 PMEM 엔트리를 관리하는 프리 리스트로 이동하고 메모리 매핑을 제거하는 단계를 포함하는 PCI 메모리를 이용한 무복사 캐싱 방법.
  5. 스마트 서버 시스템의 사용자 프로그램을 위한 PCI 메모리를 이용한 무복사 캐싱 방법에 있어서,
    읽기가 요청된 디스크 블록을 디스크가 적재되어 있는 PMEM 엔트리를 관리하는 캐시 리스트에서 검색하여 상기 캐시 리스트내에 존재하는지를 판단하는 단계;
    상기 캐시 리스트에 해당 디스크 블록이 존재하는 것으로 판단되면, 해당 디스크 블록이 존재하는 PMEM 엔트리가 사용자 프로그램에 의해 할당된 PMEM 엔트리를 관리하는 사용중 리스트에 속하는지를 판단하는 단계;
    해당 PMEM 엔트리가 사용중 리스트에 속하면, 해당 엔트리의 참조회수를 1 증가시키는 단계;
    해당 PMEM 엔트리를 캐시 리스트의 MRU로 이동하는 단계; 및
    사용자 프로그램에서 할당받은 PMEM을 할당 해제하는 단계를 포함하는 PCI 메모리를 이용한 무복사 캐싱 방법.
  6. 제5 항에 있어서, 상기 단계에서 캐시 리스트에 디스크 블록이 존재하지 않 는 것으로 판단되면,
    디스크 읽기를 수행한 후, 해당 PMEM 엔트리를 캐시 리스트의 MRU에 이동하여 삽입하는 단계를 더 수행함을 특징으로 하는 PCI 메모리를 이용한 무복사 캐싱 방법.
  7. 스마트 서버 시스템의 사용자 프로그램이 PCI 메모리(PMEM)를 사용하도록 하기 위한 PCI 메모리를 이용한 무복사 캐싱 장치에 있어서,
    하나의 PCI 메모리를 두 개의 사용자 프로그램이 각각의 주소 영역에 매핑하고, PMEM 블록을 사용하여 캐싱을 수행할 때 참조하는 캐시 리스트 및 비 캐시 리스트를 관리하는 PCI 메모리 제어부; 및
    사용자 프로그램의 현재 사용여부를 관리하는 사용중 리스트(in-use list)와 프리 리스트(free list)를 관리하는 사용자 프로그램 제어부를 포함하는 PCI 메모리를 이용한 무복사 캐싱 장치.
  8. 제 7항에 있어서, 상기 PCI 메모리 제어부는
    디스크 데이터가 적재되어 있는 PMEM은 캐시 리스트에 연결하고, 디스크 데이터가 없거나 올바르지 않은 경우에는 디스크 데이터를 비 캐시 리스트에 연결하는 것을 특징으로 하는 PCI 메모리를 이용한 무복사 캐싱 장치.
  9. 제 7항에 있어서, 상기 사용자 프로그램 제어부는
    사용자 프로그램이 할당되어 이미 사용중인 PMEM은 사용중 리스트에 연결하고, 사용중이지 않은 PMEM 은 프리 리스트에 연결하는 것을 특징으로 하는 PCI 메모리를 이용한 무복사 캐싱 장치.
  10. 제 7항에 있어서, 상기 PCI 메모리를 이용한 무복사 캐싱 장치는
    PMEM에 적재된 데이터가 갱신되기 전까지는 데이터를 유지하면서 사용자 프로그램의 읽기 요청이 현재 PMEM에 적재된 디스크 블록에 대한 것일 경우에, 디스크 접근 없이 PMEM을 재매핑(re-mapping)하는 것을 특징으로 하는 PCI 메모리를 이용한 무복사 캐싱 장치.
  11. 제 7항에 있어서, 상기 PCI 메모리를 이용한 무복사 캐싱 장치는
    동일한 데이터 블록 대해서는 동일한 PMEM을 복수의 사용자 프로그램에서 공유하는 것을 특징으로 하는 PCI 메모리를 이용한 무복사 캐싱 장치.
KR1020060079504A 2005-12-06 2006-08-22 Pci 메모리를 이용한 무복사 캐싱 방법 및 그 장치 KR100772196B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20050118427 2005-12-06
KR1020050118427 2005-12-06

Publications (2)

Publication Number Publication Date
KR20070059909A KR20070059909A (ko) 2007-06-12
KR100772196B1 true KR100772196B1 (ko) 2007-11-01

Family

ID=38356161

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060079504A KR100772196B1 (ko) 2005-12-06 2006-08-22 Pci 메모리를 이용한 무복사 캐싱 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR100772196B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050113808A (ko) * 2004-05-31 2005-12-05 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법
KR20060063804A (ko) * 2003-09-19 2006-06-12 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 캐시 메모리 제어 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060063804A (ko) * 2003-09-19 2006-06-12 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 캐시 메모리 제어 방법
KR20050113808A (ko) * 2004-05-31 2005-12-05 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법

Also Published As

Publication number Publication date
KR20070059909A (ko) 2007-06-12

Similar Documents

Publication Publication Date Title
US8499124B2 (en) Handling castout cache lines in a victim cache
US8117397B2 (en) Victim cache line selection
US8225045B2 (en) Lateral cache-to-cache cast-in
US9176876B2 (en) Selective cache-to-cache lateral castouts
US8327073B2 (en) Empirically based dynamic control of acceptance of victim cache lateral castouts
US8489819B2 (en) Victim cache lateral castout targeting
US8949540B2 (en) Lateral castout (LCO) of victim cache line in data-invalid state
US8347036B2 (en) Empirically based dynamic control of transmission of victim cache lateral castouts
EP0817078A2 (en) Allocation of cache memory space in a computer system
US8312220B2 (en) Mode-based castout destination selection
US20010010068A1 (en) State-based allocation and replacement for improved hit ratio in directory caches
AU749592B2 (en) I/O forwarding in a cache coherent shared disk computer system
US20090300289A1 (en) Reducing back invalidation transactions from a snoop filter
CN110555001B (zh) 数据处理方法、装置、终端及介质
US8095739B2 (en) Barriers processing in a multiprocessor system having a weakly ordered storage architecture without broadcast of a synchronizing operation
JP2009524137A (ja) 上位レベル・キャッシュのエビクション候補を識別するための巡回スヌープ
US6772299B2 (en) Method and apparatus for caching with variable size locking regions
CN101404649B (zh) 一种基于cache的数据处理系统及其方法
US7702875B1 (en) System and method for memory compression
JP4068185B2 (ja) コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択
US10671539B2 (en) Cache line replacement using reference states based on data reference attributes
US6138216A (en) Microprocessor cache consistency
US6598124B1 (en) System and method for identifying streaming-data
EP0919927A2 (en) Dynamic memory allocation technique for maintaining an even distribution of cache page addresses within an address space
US6785759B1 (en) System and method for sharing I/O address translation caching across multiple host bridges

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101001

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee