KR20140012934A - 메모리 읽기 및 쓰기 - Google Patents

메모리 읽기 및 쓰기 Download PDF

Info

Publication number
KR20140012934A
KR20140012934A KR1020137002395A KR20137002395A KR20140012934A KR 20140012934 A KR20140012934 A KR 20140012934A KR 1020137002395 A KR1020137002395 A KR 1020137002395A KR 20137002395 A KR20137002395 A KR 20137002395A KR 20140012934 A KR20140012934 A KR 20140012934A
Authority
KR
South Korea
Prior art keywords
block size
block
cache
efficient
storage
Prior art date
Application number
KR1020137002395A
Other languages
English (en)
Other versions
KR101569372B1 (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 KR20140012934A publication Critical patent/KR20140012934A/ko
Application granted granted Critical
Publication of KR101569372B1 publication Critical patent/KR101569372B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization

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)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 실행중인 응용 프로그램의 효율을 증대시키기 위하여, 캐쉬(140)를 사용하는 것 또는 직접적으로 스토리지(150)를 사용하는 것 중에서 어느 것이 더 효율적인 블록 크기인지를 결정하고(131); 상기 결정된 메모리 유형을 대응하는 블록 크기를 가지는 데이터 스트림에 대해 사용하는 것에 관한 것이다.

Description

메모리 읽기 및 쓰기{READING OR WRITING TO MEMORY}
본 발명은 데이터를 저장하거나 검색하는 것에 관한 것으로서, 구체적으로 응용장치를 위한 데이터 스트림 읽기 및/또는 쓰기에 관한 것이다.
컴퓨터에서 하나 또는 그 이상의 프로세서에 의해 실행되고 처리되는 응용 프로그램(application)의 속도는 처리될 정보에 대한 접근 속도에 의해서 그리고 처리된 정보가 다음 단계의 처리 또는 입력을 위해 필요할 때까지 저장되는 속도에 의해서 본질적으로 결정된다.
컴퓨터 시스템에서는 상이한 특성들을 가진, 구체적으로 상이한 속도를 가진, 그래서 상이한 가격을 가진 여러 종류의 메모리들이 사용된다. 또한, 응용 프로그램을 실행하는 프로세서와 메모리 사이에서 사용되는 상이한 버스들과, 버스들에 연결된 구성요소들은 읽기 및/또는 쓰기 속도에 영향을 끼친다. 또한, 메모리들의 특성은 개선되고 있으며 컴퓨터에서 또는 컴퓨터에 의해 사용된 메모리는 보다 빠른 것으로 업데이트될 수 있다. 메모리들은, 자주 액세스되는 명령들 및 데이터를 위한 고속 스토리지(storage)로서 사용되는 버퍼 메모리인 캐쉬와, 주 메모리 또는 스토리지라고 불리는 메모리로 기본적으로 구분된다. 기본적으로 두 개 유형의 메모리 입/출력(즉, 쓰기/읽기) 동작들이 있다: 스토리지에 직접 접속(access)하는 것과 캐쉬를 이용하는 것이 있는데, 이 경우 모든 데이터 스트림은 상기 캐쉬를 통해 주 메모리로 들어가고/들어가거나 주 메모리로부터 나온다. 현재 캐쉬를 이용하는 것은 디폴트 솔루션이다. 그렇지만, 때로는 스토리지에 직접 접속하는 것이 더 효율적일 수 있으며 오버헤드(overhead)를 줄일 수도 있다.
WO 2008/004149에서는 하나의 솔루션을 개시하고 있는데, 여기서는 스토리지로서 사용되는 플래시 메모리의 일부가 플래시 메모리의 나머지 부분을 위한 버퍼로서 사용되도록 할당됨으로써 오버헤드 시간과 플래시 메모리의 마모를 최소화한다. 이 솔루션에서, 모든 쓰기 및 읽기 요청들은 메모리 컨트롤러를 통한다. 메모리 컨트롤러가 메모리에 쓰여질 데이터 스트림을 받은 때에는, 메모리 컨트롤러는 수신된 데이터 스트림의 크기를 데이터 패킷들의 소정의 수와 비교하고, 수신된 데이터 스트림이 소정의 데이터 패킷의 수보다 크면 그것의 목적지에 직접 저장된다. 그렇지 않으면, 버퍼부에 저장된 후 나중에 목적지에 저장되고 버퍼부에 존재하는 한 버퍼부로부터 읽혀진다. 버퍼부로부터의 데이터가 저장되고 또한 동일한 목적지를 가진 데이터가 하나 이상 있는 경우에는 단지 새로운 데이터만이 저장된다.
WO 2008/004149에서의 솔루션은 여전히 스토리지 내에서만 작동하며 메모리 컨트롤러로의 그리고 메모리 컨트롤러로부터의 데이터 스트림은 캐쉬를 통하지만, 플래시 메모리에 직접 접속하는 것이 더욱 효율적일 수 있다.
아래의 내용은 본 발명의 몇 가지 측면들에 대한 기본적인 이해를 위한 간략화한 요약사항들을 제공한다. 이것이 본 발명의 광범위한 개관을 보여주지는 않는다. 이것은 또한 본 발명의 핵심적이고 중요한 요소들을 확인하거나 본 발명의 범위를 확정하려는 의도가 아니다. 이것의 유일한 목적은 본 발명의 몇 가지 개념들을 간단한 형식으로 이후의 상세한 설명에 앞서 하나의 서두로서 제공하는 것일 뿐이다.
몇몇 실시예들에 의한 측면들에 따르면, 데이터 스트림의 블록 크기에 대한 정보와 상기 블록 크기에 대하여 결정된 캐쉬 및 저장 성능에 근거하여, 캐쉬를 사용할지 또는 스토리지를 직접 사용할지 그리고 그에 따라 작업할지가 결정된다.
본 발명의 다양한 측면들은 독립 청구항들에 한정된 바에 따른 방법, 장치 및 컴퓨터 프로그램을 포함한다. 본 발명에 관한 추가적인 실시예들은 종속 청구항들에 표현되어 있다.
이하 다양한 실시예들이 아래와 같이 첨부된 도면들을 참조하여 더욱 상세하게 설명될 것이다:
도 1은 하나의 실시예에 따라 단순화한 블록도이다; 그리고
도 2 내지 4는 실시예들을 도시한 흐름도들이다.
이하 본 발명의 실시예들이 첨부된 도면들을 참조하여 설명된다. 하지만, 본 발명에 관한 모든 실시예들을 보여주지는 않는다. 사실상, 본 발명은 여러 실시예들을 통하여 구현될 수 있으며 여기서 소개된 몇 가지 실시예들로서 한정되는 것으로 해석되어서는 안 될 것이다. 오히려, 이러한 실시예들은 본 개시내용들이 적용 가능한 법률적인 요건들을 충족시키도록 하기 위하여 제공되고 있을 뿐이다. 본 명세서에서 "어떤 하나의, 한", "하나의" 또는 "어떤, 다소의" 실시예(들)를 참조하고 있는데, 이것이 동일한 실시예(들)를 참조한다거나 단일 실시예에만 국한된다거나 하는 것을 필연으로 하지는 않는다. 여러 가지의 실시예들에 있어서의 단일 특징들도 마찬가지로 다른 실시예들에 적용 가능할 수 있다.
본 발명의 실시예들은 컴퓨팅 장치들, 컴퓨터들, 그에 상당하는 구성요소들, 및/또는 캐쉬 사용을 지원하는 어떠한 종류의 컴퓨팅 시스템들 또는 네트워크에도 적용될 수 있다. 컴퓨팅 장치는 어떠한 종류의 프로세서들도 포함하며, 시스템들 및 메모리/메모리들을 동작시킨다. 그러므로, 모든 용어들 및 표현들은 넓게 해석되어야 하며, 실시예들을 한정없이 상술하기 위하여 제공되는 것들이다.
하나의 실시예에 따른 컴퓨팅 장치의 일반적인 배치구조가 도 1에 도시되어 있다. 도 1은 컴퓨팅 장치의 몇 가지 구성요소들을 보여주는 단순한 블록도로서, 이 구성요소들은 실시예를 예시하는 데 사용될 뿐이다. 컴퓨팅 장치는 여기서 복잡하게 나타낼 필요성이 없는 다른 구성요소들, 모듈들, 배선들, 연결구조들 등을 포함하는 것으로 이해되어야 한다.
컴퓨팅 환경을 묘사하고 있는 컴퓨팅 장치(100)는 응용 프로그램(120)을 실행시키며 결정 구성요소(130)에 버스(101)를 통하여 연결된 프로세서(110)를 구비한다. 결정 구성요소(130)는, 이것에 의해 프로세서 및 응용 프로그램도, 버스(102)를 통하여 캐쉬(140)에 접속되고 버스(103)를 통하여 스토리지(150)에 또한 연결된다. 아래의 실시예로 설명되는 결정 구성요소(130)의 기능을 구현하는 컴퓨팅 장치(100)는 종래의 수단뿐만 아니라 예컨대 캐쉬를 사용할지 스토리지를 직접 사용할지를 결정하는 수단도 포함한다. 더 정확하게 말하면, 컴퓨팅 장치는 실시예에서 설명되는 기능성을 구현하는 수단을 포함하고 또한 각각의 기능을 위한 각각의 독립된 수단을 포함하거나, 둘 또는 그 이상의 기능들을 수행하거나 심지어 다른 실시예들의 기능들을 결합시키도록 구성된 수단이 제공될 수도 있다.
일반적으로 프로세서(110)는 중앙처리장치(CPU)이지만, 추가적인 연산 프로세서일 수도 있다. 컴퓨팅 장치가 다른 구성요소들을 포함하고/하거나 캐쉬와 스토리지가 인터페이스를 통하여 접속가능한 다른 컴퓨팅 장치에 위치할 수도 있음을 이해하여야 한다.
결정 구성요소(130)는 이하의 실시예에서 설명되는 기능들을 수행하기 위하여 구성되어 있으며, 다른 실시예들로부터의 기능들을 수행하기 위하여 구성될 수 있다. 이를 위하여, 상기 결정 구성요소(deciding component)는 결정 테이블(131)을 저장하는 소량의 메모리를 포함할 수 있으며 임플리먼테이션(implementation)에 따라, 프로세서(110)에 연결되거나, 기능들을 수행하기 위한 자체의 프로세서(도 1에 도시되지 않음)를 구비할 수도 있다. 또한, 상기 결정 구성요소는 다른 장치들을 구비할 수 있으며, 예컨대 제어 정보, 데이터, 및 쓰기 또는 읽기 요청을 수신하고 포워딩하기 위한 여러 가지의 인터페이스들을 포함한다.
실시예에 따른 결정 구성요소는 대체로 컴퓨팅 장치의 내부 메모리와 다양한 인터페이스들에 연결된 컨트롤러, 제어장치, 마이크로컨트롤러, 또는 이와 유사한 장치일 수 있다. 이 결정 구성요소는 연산 작동에 사용된 스토리지 영역을 제공하기 위한 메모리와 연산을 실행하는 연산 프로세서를 적어도 포함하는 단일 칩 컴퓨터 부품, 칩 셋 또는 보드와 같은 마이크로프로세서로서 구성될 수 있다. 상기 결정 구성요소는 하나 또는 그 이상의 실시예들에서의 기능들을 수행하도록 프로그램된 다른 하드웨어 구성요소들 및/또는 필드 프로그래머블 게이트 어레이들(FPGA), 프로그래머블 논리장치들(PLD), 디지털 신호 처리장치들(DSPD), 디지털 신호 처리기들(DSP), 응용 집적회로들(ASIC) 및 하나 또는 그 이상의 컴퓨터 프로세서들을 구비할 수 있다. 실시예에서는, 컴퓨팅 장치로 로딩되었을 때 결정 장치(deciding unit)를 구성하는 프로그램 명령들을 포함하며, 어떠한 종류의 컴퓨팅 장치 분배/데이터 저장 매체에서 구현되는 컴퓨터 프로그램으로서의 상기 결정 구성요소가 제공되어 있다. 프로그램 제품들이라고도 칭해지는, 애플릿들(applets) 및 매크로들(macros), "프로그램 라이브러리들"을 구성하는 프로그램 스니핏들(snippets), 그리고 소프트웨어 루틴들을 포함하는 프로그램들은 어떠한 종류의 매체에도 저장될 수 있으며 컴퓨팅 장치로 다운로드될 수 있다.
캐쉬(140) 및 스토리지(150)는 휘발성 및/또는 비휘발성 메모리일 수 있으며, 이들은 서로 다른 유형일 수 있다. 예를 들면, 캐쉬 및/또는 스토리지는 응용 프로그램(120)의 수행과 연관된 단계들을 수행하기 위하여 중앙처리장치 또는 대응하는 프로세서에 필요한 응용 소프트웨어들이나 운용체계, 정보, 데이터, 컨텐츠 등과 같은 컴퓨터 프로그램 코드를 저장할 수 있다. 캐쉬 및/또는 스토리지는 예를 들면 랜덤 액세스 메모리, 하드 디스크, 플래시 메모리, 반도체 기억 장치(SSD) 또는 다른 고정식 데이터 메모리이거나 저장 장치일 수 있다. 또한, 캐쉬 및/또는 스토리지 또는 그것(그것들)의 일부는 컴퓨터 장치에 탈착가능하도록 연결된 이동식 메모리일 수 있다.
버스들(102 및 103)은 구성요소들 사이에서 어떤 종류의 데이터도 전송할 수 있는 종류의 버스들일 수 있으며, 서로 다른 종류일 수 있다. 이 버스는 다중 배선 상에서 데이터를 병렬로 전송하는 병렬 버스이거나, 직렬식으로 데이터를 전송하는 직렬 버스이거나, 병렬 및 직렬식 연결구조 모두를 사용하는 버스일 수 있다. 따라서 버스들(102 및 103)은 데이터 전송을 하는 여러 가지의 연결구조들 및 구성요소들을 수용하는 임의의 물리적인 배열로 될 수 있다.
도 1에는 컴퓨팅 장치가 독자적인 것으로 도시되어 있지만, 메모리들은 하나 또는 그 이상의 물리적 또는 논리적 구성체들로서 구현될 수 있다. 예를 들면, 캐쉬 및/또는 스토리지는 다중 컴퓨팅 장치들에 걸쳐 분포된(공유된) 스토리지 장치들로서 구현되고 버스들은 컴퓨팅 장치들의 내부로 또는 컴퓨팅 장치들의 사이에서 데이터를 전송할 수 있다. 장치들과 기능들은 소프트웨어 및/또는 소프트웨어-하드웨어 및/또는 펌웨어 구성요소들(독출전용 메모리와 같은 매체에 지울 수 없도록 기록되거나 하드웨어 내장(hard-wired) 컴퓨터 회로군에 설치됨)일 수 있다.
도 2는 실시예에 따른 결정 구성요소의 기능을 보여 준다. 이 실시예에서, 결정 구성요소는 특정한 블록 크기들에 대해 캐쉬를 사용하는 것과 스토리지에 직접 저장하는 것 중에서 어느 것이 더 효율적인지를 측정함으로써 결정한다, 즉 메모리 유형들 중 어느 것이 더 효율적인 메모리 유형인지를 결정한다. 블록 크기들은 예컨대 512, 1, 2, 4,... 1024 kB일 수 있다(하나의 블록은 쓰기 및/또는 읽기의 단위이다).
실시예에 있어서, 결정 구성요소는 읽기(입력) 및 쓰기(출력)를 위하여 개별적으로 아래의 단계들을 수행한다. 이 단계들은 아래에 설명되는 바와 달리 거의 동시에 및/또는 다른 순서로 수행될 수도 있음을 이해하여야 한다. 다른 실시예에 있어서, 결정 구성요소는 읽기에 대해서만 또는 쓰기에 대해서만 아래에 설명되는 단계들을 수행한 다음, 읽기 및 쓰기 둘 다에 대한 결과를 사용한다. 그러나, 읽기 및 쓰기는 독립적인 작업들이므로, 읽기 및 쓰기 둘 다에 대하여 아래의 단계들을 수행하는 것은 컴퓨팅 장치에서 전반적으로 가장 효율적인 입출력 성능을 발휘한다는 장점을 가진다.
도시된 예에서는, 명확성을 위하여, 읽기(쓰기)를 위한 시간은 어느 것이 더 효율적인가를 결정하는 결정적 요인으로서 이용되는 것으로 가정한다. 하지만, 결정적 요인으로 무엇을 사용하는지에 관해서 제한은 없으며 다른 요인들을 결합하여 이용할 수도 있다. 예를 들면, 결정적 요인은 CPU 자원(더 효율적인 방식이 동일한 작업량에 대하여 더 적은 CPU 자원들을 사용하거나, 동일한 분량의 CPU 자원들은 더 많은 작업을 수행한다)과 같은 프로세서 자원들의 사용과 관련될 수 있으며, 또는 결정적 요인은 시간과 프로세서 자원들의 사용 둘 다를 고려할 수도 있다. 또한, 컴퓨팅 장치의 읽기 및/또는 쓰기 동작을 사용하는 응용 프로그램들은 결정적 요인에 영향을 미치는 필수요건들을 가질 수 있다. 한 실시예에 있어서, 예컨대 사용자에게 선택목록을 제공함으로써 사용자에게 결정적 요인을 선택할 기회를 줄 수 있으며, 그런 다음 사용자가 선택한 것을 사용할 수 있다.
결정 구성요소는 제 1 블럭 크기를 정하고(단계 201), 단계 202에서 소요되는 시간을 측정하는 동시에 캐쉬로부터의 양을 읽는다. 그런 다음, 단계 203에서 동일한 양이 스토리지로부터 직접 읽혀지며 소요시간을 측정한다. 다음으로, 단계 204에서 결정 장치는 어느 메모리 유형이 더 효율적인지, 즉 도시된 예에서는 가장 빠른 것을 선택하며, 단계 205에서 상기 메모리 유형을 읽기에 대한 블록 크기와 연관시킨다. 그리고 나서, 단계 206에서 모든 블록 크기들이 메모리 유형과 연관되어 있는지를 확인한다. 그렇지 않은 경우에는, 결정 구성요소가 다음 블럭에 대하여 상기한 동작, 즉 단계 201의 동작을 계속한다. 모든 블록 크기들이 메모리 유형과 연관되어 있으면, 읽기(입력)를 위해 사용될(단계 207) 준비가 된 것이다.
실시예에 있어서, 전술한 단계들은 쓰기에 대해서도 반복된다. 다시 말해, 읽기 대신 쓰기가 단계 202 및 203에서 수행된다. 그런 다음, 나온 결과는 블록 크기를 갖는 결정 테이블일 수 있다. 즉, 읽기에 대해 그리고 쓰기에 대해 독립적으로 선택된 특정한 메모리 유형이거나, 읽기에 대한 메모리 유형이 쓰기에 대한 메모리 유형과 같거나, 도 1에 도시된 것과 같이, 다를 수 있다.
이 실시예의 장점은, 사용할 메모리 유형을 결정할 때 모든 구성요소들, 여러 종류의 버스들 등이 그것들의 실제적인 기능들에 따라 고려된다는 것이다. 이것의 부가적인 장점은 프로세서들의 부하가 최소화됨으로써 발열이 적고 에너지가 덜 요구된다는 것이다.
본 발명의 다른 실시예에 있어서, 시간 측정과 같은 측정을 수행하는 대신에, 결정 구성요소는 메모리들(즉, 캐쉬 및 스토리지)의 크기들, 한 순간에 사용 가능한 메모리가 얼마나 있는지, 그리고 버스 속도들과 같은 시스템 파라미터들을 구하고, 그러한 정보를 이용하여 각 블록 크기에 대하여 더 효율적인 메모리 유형(캐쉬를 통한 저장 또는 직접 저장)을 계산한다.
다른 실시예에 있어서, 결정 구성요소는 측정 및 계산을 수행하고, 상기 측정 결과와 계산 결과를 비교하여 하드웨어를 검증하도록 구성된다. 하드웨어 타당성 검증(validation)에 의해 제공되는 장점은, 발생 가능한 결함을 검출하고 더 큰 결함이 발생되기 전에 결함의 정정을 수월하게 할 수 있도록 지원하는 것이다.
전술한 측정/계산들은 전원이 켜졌을 때, 일정한 간격으로, 및/또는 운용체제의 온라인 업데이트, 드라이버 업데이트, 캐쉬 관리 소프트웨어 업데이트, 새로운 메모리 보드 설치 등과 같이 컴퓨팅 장치에서 하드웨어 또는 소프트웨어 변화들이 있을 때 수행될 수 있다.
다른 실시예에 있어서, 이러한 측정/계산들은 데이터 스트림이 시작할 때마다 그 데이터 스트림에 의해 사용되는 블록 크기에 대하여 수행될 수 있다.
도 3은 결정 구성요소가 단계 301에서 데이터 스트림이 읽혀질 것인지 쓰여질 것인지에 관한 정보와 데이터 스트림의 블록 크기 표시를 수신하는 경우를 보여 준다. 그런 다음, 결정 구성요소는 수신된 표시를 사용하여 단계 302에서 예컨대 도 2와 관련하여 설명한 바와 같이 생성된 테이블로부터 값을 구하는데, 이 값은 "캐쉬" 또는 "스토리지" 중 어느 것이 된다. 수신된 블록 크기가 검사된 블록 크기들 중의 하나가 아닌 경우에는, 즉 블록 크기와 연관된 메모리 유형을 갖고 있지 않은 경우에는, 임플리먼테이션(implementation)에 따라, 다음 블록 크기를 늘리거나 줄이거나 또는 가장 근사한 블록 크기가 사용된다. 그런 다음, 구해진 메모리 유형이 데이터 스트림에 대하여 단계 303에서 사용된다. 예를 들면, 데이터 스트림이 쓰여질 것이라면, 이 데이터 스트림은, 단계 302에서 구해진 바에 따라, 결정 구성요소로부터 캐쉬 또는 스토리지로 전송된다.
이상의 내용은 임플리먼테이션(implementation)에도 또한 적용되는데, 데이터 스트림의 블록 크기의 표시와 데이터 스트림이 읽혀질지(read) 쓰여질지(written)에 관한 정보가 결정 구성요소를 통과하지만 실제의 데이터 스트림은 결정 구성요소를 통과하지 않는 경우에도 또한 적용된다.
결정 구성요소는 응용 프로그램에도 그대로 적용될 수 있다. 한편, 도 4는 읽기/쓰기에 대응하는 메모리 유형들을 블록 크기와 연관시킨 후, 결정 구성요소가 단계 401에서 최적의 블록 크기들을 결정하고 단계 402에서 응용 프로그램에 상기 최적의 블록 크기를 알리는 실시예를 보여 준다. 최적의 블록 크기는 도 2와 관련하여 설명한 과정에서 구해진 측정 및/또는 계산 결과들을 사용하여 결정하는 것이 바람직하며, 이 최적 값은 전체적으로 최고의 결과(예를 들면, 최고의 속도 또는 최고의 성능)를 부여하는 것이다. 따라서, 이 실시예는 알려질 동적이고 최적인 값을 제공하며, 이 값은 컴퓨팅 환경과 이에 가해지는 변화들을 고려한 측정 및/또는 계산에 의해서 구해진다. 이러한 값을 알림으로써 효율성이 향상되는데, 이러한 특징은 종래의 개발자의 추정에 기반한 하드코드화된(hardcoded) 알림 값, 즉, 하드코드화된 시간에 행해진 개발자의 최선의 추정으로는 결코 획득할 수 없는 것이다.
도 2 내지 도 4에서 전술한 단계들 및 관련 기능들은 절대적인 시간적 순서로 수행되는 것은 아니며, 몇 가지 단계들은 동시에 또는 주어진 순서와 달리 실행될 수 있다. 예를 들면, 읽기 및 쓰기 측정들은 다른 블록 크기에 대해서 진행하기(단계들 201~205) 전에 하나의 블록 크기에 대하여 수행(단계들 202~205)될 수도 있다. 다른 기능들도 마찬가지로 단계들 사이 또는 단계들 내에서 실행될 수 있다. 또한 몇 가지 또는 일부의 단계들은 생략될 수 있다. 예를 들면, 데이터를 읽고/읽거나 쓰는 응용 프로그램은 읽기 및/또는 쓰기를 위한 자체적인 제어를 요청할 수 있는데, 이 경우 상기 요청에 응답하여, 데이터 스트림이 결정 구성요소를 통과하더라도 데이터 스트립은 사용될 메모리 유형을 구하지 않는다. 즉, 단계 302와 단계 303이 생략된다. 또한, 몇 가지 또는 일부의 단계들은 합쳐지거나 대응하는 단계 또는 단계의 일부에 의해 대체될 수 있다. 예를 들면, 단계 202와 단계 203에서의 시간 측정 대신에 또는 이에 더하여 CPU 사용이 측정될 수 있다.
기술이 진보함에 따라 본 발명의 개념이 다양한 방식으로 구현될 수 있음은 당업자에게 자명할 것이다. 본 발명과 실시예들은 전술한 예들에 국한되지 않으며 청구범위 내에서 다양해질 수 있다.

Claims (14)

  1. 블록 크기에 대해 캐쉬를 사용하는 것과 스토리지를 직접 사용하는 것 중에서 어느 것이 더 효율적인지를 결정하는 단계; 및
    상기 블록 크기를 가지는 데이터 스트림에 응답하여, 블록 크기에 대해 상기 결정된 더 효율적인 방식을 사용하는 단계를 포함하는, 컴퓨팅 환경을 위한 방법.
  2. 제1항에 있어서, 상기 결정하는 단계가:
    특정 블록 크기들에 대하여 캐쉬를 사용하는 것과 스토리지를 직접 사용하는 것 중에서 어느 것이 더 효율적인지를 측정하는 단계;
    각각의 측정된 블록 크기에 대해 더 효율적인 방식을 선택하는 단계; 및
    상기 블록 크기와 상기 선택된 방식을 연관시키는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 결정하는 단계가:
    메모리 사용의 효율성에 영향을 미치는, 상기 컴퓨팅 환경의 시스템 파라미터들을 구하는 단계;
    상기 구해진 시스템 파라미터들을 사용하여, 특정한 블록 크기들에 대하여 캐쉬를 사용하는 것과 스토리지를 직접 사용하는 것 중에서 어느 것이 더 효율적인지를 계산하는 단계;
    각각의 계산된 블록 크기에 대하여 더 효율적인 방식을 선택하는 단계; 및
    상기 블록 크기와 상기 선택된 방식을 연관시키는 단계를 더 포함하는 방법.
  4. 제2항에 있어서,
    메모리 사용의 효율성에 영향을 미치는, 상기 컴퓨팅 환경의 시스템 파라미터들을 구하는 단계;
    상기 구해진 시스템 파라미터들을 사용하여, 특정한 블록 크기들에 대하여 캐쉬를 사용하는 것과 스토리지를 직접 사용하는 것의 효율성을 계산하는 단계; 및
    상기 측정 결과들을 대응하는 계산 결과들과 비교하여 상기 컴퓨팅 환경에서 하드웨어를 검증하는 단계를 더 포함하는 방법.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    데이터 스트림의 블록 크기에 대한 정보를 수신하는 단계;
    상기 데이터 스트림의 블록 크기가 어느 측정된 블록 크기에 대응하는지를 결정하는 단계; 및
    상기 데이터 스트림에 상기 연관 방식을 사용하는 단계를 더 포함하는 방법.
  6. 제2항 내지 제5항 중 어느 한 항에 있어서,
    상기 선택을 수행하는데 있어서 기초가 된 상기 측정 결과 또는 계산 결과에 근거하여, 최적의 블록 크기를 결정하는 단계; 및
    응용 프로그램에 상기 최적의 블록 크기를 알리는 단계를 더 포함하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    읽기에 대한 단계들 및 쓰기에 대한 단계들을 독립적으로 수행하는 단계를 더 포함하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 블록을 읽기 위해 걸린 시간 및/또는 상기 블록을 쓰기 위해 걸린 시간 및/또는 상기 블록을 읽기 위한 프로세서 자원들의 사용량 및/또는 상기 블록을 쓰기 위한 프로세서 자원들의 사용량 및/또는 프로세서 자원들의 특정한 사용에 의해 읽히고/읽히거나 쓰여진 데이터량에 근거하여 상기 결정을 수행하는 단계를 더 포함하는 방법.
  9. 장치에서 실행될 때 제1항 내지 제8항 중 어느 한 항에 따른 방법을 수행하도록 구성된 컴퓨터 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
  10. 제1항 내지 제8항 중 어느 한 항에 따른 방법을 구현하는 수단을 포함하는 장치.
  11. 제10항에 있어서,
    데이터 스트림이 통과하는 구성요소, 스토리지 및 캐쉬를 포함하며, 상기 구성요소는 적어도, 블록 크기에 대하여 더 효율적인 방식에 따라, 상기 블록 크기에 대해 캐쉬 또는 스토리지를 사용하는 수단인 장치.
  12. 특정 블록 크기에 대하여 캐쉬를 사용하는 것과 스토리지를 직접 사용하는 것 중 어느 것이 더 효율적인지를 측정하고;
    각각의 측정된 블록 크기에 대하여 더 효율적인 방식을 선택하고;
    블록 크기와 상기 선택된 방식을 연관시키고; 그리고
    상기 블록 크기를 가지는 데이터 스트림에 응답하여, 상기 블록 크기에 대하여 결정된 더 효율적인 방식을 사용하도록 구성된 컴퓨터 구성요소.
  13. 제12항에 있어서,
    상기 블록을 읽기 위해 걸린 시간 및/또는 상기 블록을 쓰기 위해 걸린 시간 및/또는 상기 블록을 읽기 위한 프로세서 자원들의 사용량 및/또는 상기 블록을 읽기 위한 프로세서 자원들의 사용량 및/또는 상기 블록을 쓰기 위한 프로세서 자원들의 사용량 및/또는 프로세서 자원들의 특정한 사용에 의해 읽히고/읽히거나 쓰여진 데이터량을 측정하고, 스토리지의 직접 사용과 캐쉬에 대해 구해진 측정 결과들에 따라 더 효율적인 방식을 선택하도록 더 구성된 컴퓨터 구성요소.
  14. 제12항 또는 제13항에 있어서,
    상기 컴퓨터 구성요소가 컨트롤러, 제어장치, 마이크로컨트롤러, 단일 칩 컴퓨터 소자, 칩셋 또는 보드인 컴퓨터 구성요소.
KR1020137002395A 2010-06-29 2011-06-21 메모리 읽기 및 쓰기 KR101569372B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FI20105743A FI20105743A0 (fi) 2010-06-29 2010-06-29 Muistista lukeminen tai muistiin kirjoittaminen
FI20105743 2010-06-29
PCT/FI2011/050597 WO2012001234A1 (en) 2010-06-29 2011-06-21 Reading or writing to memory

Publications (2)

Publication Number Publication Date
KR20140012934A true KR20140012934A (ko) 2014-02-04
KR101569372B1 KR101569372B1 (ko) 2015-11-16

Family

ID=42308195

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137002395A KR101569372B1 (ko) 2010-06-29 2011-06-21 메모리 읽기 및 쓰기

Country Status (6)

Country Link
US (1) US8775738B2 (ko)
EP (1) EP2588964B1 (ko)
JP (2) JP6005637B2 (ko)
KR (1) KR101569372B1 (ko)
FI (1) FI20105743A0 (ko)
WO (1) WO2012001234A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101873296B1 (ko) * 2011-09-15 2018-07-03 삼성전자주식회사 저장공간 확장이 가능한 단말기 및 그 저장공간 확장방법
US9921962B2 (en) * 2015-09-24 2018-03-20 Qualcomm Incorporated Maintaining cache coherency using conditional intervention among multiple master devices
KR20220022139A (ko) 2020-08-18 2022-02-25 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0460730A (ja) * 1990-06-28 1992-02-26 Nec Corp キャッシュ制御方式
EP0667579A1 (en) * 1994-02-09 1995-08-16 Ballard Synergy Corporation Cache for optical storage device
JPH10269143A (ja) * 1997-03-25 1998-10-09 Mitsubishi Electric Corp ディスクキャッシュ装置のキャッシュパラメータ制御方法及びディスクキャッシュ装置
US6266742B1 (en) * 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
JPH11353230A (ja) * 1998-06-04 1999-12-24 Toshiba Corp コンピュータ装置
JP4508608B2 (ja) * 2003-11-13 2010-07-21 株式会社日立製作所 統合キャッシュを備えた記憶装置アダプタ
US7401188B2 (en) * 2005-06-29 2008-07-15 Intel Corporation Method, device, and system to avoid flushing the contents of a cache by not inserting data from large requests
WO2007072287A2 (en) * 2005-12-20 2007-06-28 Koninklijke Philips Electronics N.V. Method of controlling disk accesses between a hard-disk drive and a number of stream buffers
US7409502B2 (en) 2006-05-11 2008-08-05 Freescale Semiconductor, Inc. Selective cache line allocation instruction execution and circuitry
WO2008004149A2 (en) 2006-06-30 2008-01-10 Nxp B.V. Flash memory device having a flash cache portion and a method for using the same
US20080184003A1 (en) * 2007-01-30 2008-07-31 Kabushiki Kaisha Toshiba Data transmission control apparatus and data transmission control method
US7895397B2 (en) * 2007-09-12 2011-02-22 Intel Corporation Using inter-arrival times of data requests to cache data in a computing environment
US7886110B2 (en) * 2007-12-27 2011-02-08 Intel Corporation Dynamically adjusting cache policy based on device load in a mass storage system
WO2009107393A1 (ja) * 2008-02-29 2009-09-03 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、及び情報記録システム
US8433854B2 (en) * 2008-06-25 2013-04-30 Intel Corporation Apparatus and method for cache utilization
US8601213B2 (en) 2008-11-03 2013-12-03 Teradata Us, Inc. System, method, and computer-readable medium for spool cache management

Also Published As

Publication number Publication date
US8775738B2 (en) 2014-07-08
KR101569372B1 (ko) 2015-11-16
EP2588964B1 (en) 2019-12-25
CN102971719A (zh) 2013-03-13
EP2588964A1 (en) 2013-05-08
JP2013533551A (ja) 2013-08-22
FI20105743A0 (fi) 2010-06-29
JP2016149155A (ja) 2016-08-18
JP6145193B2 (ja) 2017-06-07
JP6005637B2 (ja) 2016-10-12
US20110320718A1 (en) 2011-12-29
WO2012001234A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
US8275933B2 (en) Apparatus, system, and method for managing physical regions in a solid-state storage device
US8245060B2 (en) Memory object relocation for power savings
US8656137B2 (en) Computer system with processor local coherency for virtualized input/output
US10025504B2 (en) Information processing method, information processing apparatus and non-transitory computer readable medium
US9916265B2 (en) Traffic rate control for inter-class data migration in a multiclass memory system
US11012075B2 (en) Electronic system including FPGA and operation method thereof
CN102346682A (zh) 信息处理装置及信息处理方法
JP6145193B2 (ja) メモリへの読取り又は書込み
US9740618B2 (en) Memory nest efficiency with cache demand generation
JP4669244B2 (ja) キャッシュメモリ装置およびメモリ制御方法
US7823013B1 (en) Hardware data race detection in HPCS codes
US10209749B2 (en) Workload allocation based on downstream thermal impacts
WO2020117917A1 (en) Allocation of test resources to perform a test of memory components
US8533423B2 (en) Systems and methods for performing parallel multi-level data computations
CN115495433A (zh) 一种分布式存储系统、数据迁移方法及存储装置
US8359456B2 (en) Generating random addresses for verification of distributed computerized devices
JP2020077075A (ja) 情報処理装置、情報処理方法、およびプログラム
US11556259B1 (en) Emulating memory sub-systems that have different performance characteristics
KR102591808B1 (ko) 컴퓨팅 시스템 및 그 동작 방법
CN113254321B (zh) 一种评估处理器内存访问性能的方法及系统
US20170357463A1 (en) Characterization profiles of memory devices
JP2022183757A (ja) 継続的インテグレーションシステム及び継続的インテグレーション方法
CN117951072A (zh) 片上系统及其操作方法
JP2014157476A (ja) 計測装置及び計測方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant