KR20180128489A - 오브젝트 태그된 메모리 모니터링 방법 및 프로세싱 장치 - Google Patents

오브젝트 태그된 메모리 모니터링 방법 및 프로세싱 장치 Download PDF

Info

Publication number
KR20180128489A
KR20180128489A KR1020187032346A KR20187032346A KR20180128489A KR 20180128489 A KR20180128489 A KR 20180128489A KR 1020187032346 A KR1020187032346 A KR 1020187032346A KR 20187032346 A KR20187032346 A KR 20187032346A KR 20180128489 A KR20180128489 A KR 20180128489A
Authority
KR
South Korea
Prior art keywords
memory
tag
statistics
tracking
application
Prior art date
Application number
KR1020187032346A
Other languages
English (en)
Other versions
KR102410348B1 (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 KR20180128489A publication Critical patent/KR20180128489A/ko
Application granted granted Critical
Publication of KR102410348B1 publication Critical patent/KR102410348B1/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

메모리 할당 호출들에 관련된 오브젝트들을 태그하고 추적하기 위한 방법 및 프로세싱 장치가 설명된다. 애플리케이션 또는 소프트웨어는 오브젝트 레벨 추적을 가능하게 하기 위해 메모리 할당 호출에 태그를 부가한다. 엔트리는 오브젝트 추적 테이블로 만들어지며, 이는 오브젝트 및 연관된 메모리 디바이스들에 관련된 태그 및 다양한 통계치들을 저장한다. 오브젝트 통계치들은 애플리케이션 생성 런타임 배치 판단들에 의해, 또는 이전 실행에 기초한 오프라인 코드 조정에 의해 전력/성능 특성들을 조정하기 위해 애플리케이션에 의해 쿼리될 수 있다. 애플리케이션은 오브젝트 통계치들에 기초하여 요청된 메모리 특성들의 유형을 특정하기 위해 메모리 할당 호출에 태그를 부가할 수 있다.

Description

오브젝트 태그된 메모리 모니터링 방법 및 프로세싱 장치
정부 권한 조항
본 발명은 DOE에 의해 부여된 주 계약 번호 DE-AC5207NA27344, 서브계약 번호 B600716 하에 정부 지원으로 이루어졌다. 정부는 본 발명에서 특정한 권한들을 갖는다.
관련 출원들에 대한 상호 참조
본 출원은 2016년 4월 22일에 출원된 미국 정규 출원 번호 제15/136,851호의 이득을 주장하며, 그 내용들은 여기에서 완전히 제시된 것처럼 참조로서 통합된다.
기술 분야
개시된 구현들은 일반적으로 프로세서들에 관한 것이며, 특히, 메모리 관리 및 프로세싱에 관한 것이다.
애플리케이션 또는 소프트웨어 제어된 이종 메모리 시스템들은 사용자 또는 운영 체제가 데이터를 둘 곳을 택하도록 허용한다. 이들 유형들의 이종 메모리 시스템들은 상이한 액세스 패턴들, 예로서 랜덤, 순차적, 고-대역폭, 고-용량, 또는 저 전력에 맞춰진 다수의 메모리 디바이스들을 가질 수 있다. 사용자-제어 환경하에서, 메모리 할당들은 예를 들면, C에서 malloc()과 같은 함수에 의해 수행된다. 애플리케이션들은 통상적으로 오브젝트 레벨에서 그것들의 데이터를 관리하며 데이터가 메모리 디바이스에 연속 할당될 것으로 예상한다. 그러나, 데이터는 페이지 레벨에서 운영 체제에 의해 추적되고 할당된다. 현재 메모리 제어기 레벨에서 오브젝트-레벨 성능을 애플리케이션에 알리기 위한 방법은 없다. 예를 들면, 높은 랜덤 액세스, 높은 대역폭 또는 낮은 판독/기록 비를 가진 오브젝트가 적절하게 전력/성능-조정된 메모리 영역에 할당될 수 있는 방법은 없다. 사용자 레벨에서 이러한 유형의 직접 오브젝트 할당은 현재 가능하지 않다.
보다 상세한 이해는, 수반되는 도면들과 함께 예로서 제공된, 다음의 설명으로부터 이루어질 수 있다.
도 1은 특정한 구현들에 따른 프로세싱 장치의 예시적인 블록도이다;
도 2는 특정한 구현들에 따라 오브젝트들을 태그하고 추적하기 위한 예시적인 순서도이다; 및
도 3은 본 출원에서 설명된 방법 및 프로세싱 장치를 구현하기 위한 예시적인 디바이스의 블록도이다.
메모리 할당 호출들에 관련된 오브젝트들을 태그하고 추적하기 위한 방법 및 프로세싱 장치가 본 출원에서 설명된다. 방법 및 프로세싱 장치는 애플리케이션 또는 소프트웨어로 하여금, 소프트웨어가 추적 또는 모니터링에 관심 있는 오브젝트들(즉, 메모리 어드레스들의 범위)을 식별하도록 허용한다. 오브젝트 추적 테이블은 오브젝트 통계치에 대해 계속 파악할 수 있다. 소프트웨어는 그 후 누적된 오브젝트 통계치를 다시 판독하며 오브젝트 통계치의 분석에 기초하여 최적화한다. 방법 및 프로세싱 장치는 관심 있는 통계치 및 오브젝트들을 추적하는 자동 방식을 애플리케이션에 제공한다. 이하에서 설명되는 바와 같이, 방법 및 프로세싱 장치는 운영 체제 개입 없이 오브젝트- 및 메모리-레벨 입도에서 정확한 데이터 매핑 판단들을 지원하고, 페이지-입도 모니터링에 비해 정확도를 개선하며 가상 어드레스 변환 레벨에서(즉, 변환 색인 버퍼에서) 보이지 않는 부작용 트래픽 거동(캐시 축출-트리거된 판독들 및 기록들)을 캡처한다.
일반적으로, 애플리케이션 또는 소프트웨어는 오브젝트 레벨 추적을 가능하게 하기 위해 메모리 할당 호출에 태그를 부가한다. 엔트리는 오브젝트 추적 테이블로 만들어지며, 이는 오브젝트 및 연관된 메모리 디바이스들에 관련된 태그 및 다양한 통계치들을 저장한다. 오브젝트 통계치는 애플리케이션 생성 런타임 배치 판단들에 의해, 또는 이전 실행에 기초한 오프라인 코드 조정에 의해 전력/성능 특성들을 조정하기 위해 애플리케이션에 의해 쿼리될 수 있다. 애플리케이션은 오브젝트 통계치들에 기초하여 요청된 메모리 특성들의 유형을 특정하기 위해 메모리 할당 호출에 태그를 부가할 수 있다.
도 1은 특정한 구현들에 따른 프로세싱 장치(100)의 예시적인 블록도이다. 프로세싱 장치(100)는 메모리 제어기(110) 및 오브젝트 추적 테이블(115)에 연결될 수 있는 프로세싱 유닛(105)을 포함한다. 메모리 제어기(110)는 오브젝트 추적 테이블(115) 및 메인 메모리(120)에 연결될 수 있으며, 이는 오브젝트 추적 테이블(115)에 추가로 연결될 수 있다. 도 1은 메모리 제어기(110)로서 제어기를 묘사하지만, 제어기는 캐시 제어기 또는 임의의 유사한 디바이스일 수 있다. 도 1은 메인 메모리(120)로서 메모리를 묘사하지만, 메모리는 캐시 또는 임의의 다른 유사한 디바이스일 수 있다. 프로세싱 장치(100)는 도 1에 도시되지 않은 부가적인 구성요소들을 포함할 수 있다는 것이 이해된다.
설명된 프로세싱 장치 및 방법은 오브젝트 레벨 기반으로 추적한다는 것이 주의된다. 알려진 바와 같이, 애플리케이션은 가상 어드레스 공간에서 동작하거나 또는 구동된다. 운영 체제(OS)는 예를 들면, 프로세싱 유닛(105)에 위치될 수 있는, 변환 색인 버퍼(TLB)를 사용하여 대응하는 물리 어드레스들을 알고 있다. 결과적으로, 오브젝트는 다수의 페이지들, 하나의 페이지 또는 페이지 미만일 수 있으며 그러므로 페이지 분해능과 관련되지 않는다.
일반적으로, 애플리케이션 또는 소프트웨어(즉, 사용자 레벨 구조물 또는 디바이스)는 메모리 요청을 전송하거나 또는 메모리 할당 함수 호출을 할 수 있다. 메모리 할당 함수 호출은 태그를 제공할 수 있다. 애플리케이션은 메모리 할당 함수 호출, 즉 malloc(크기, 태그) 함수 호출에 태그를 포함함으로써 어떤 오브젝트들이 추적될 필요가 있는지를 제어할 수 있다. 이러한 유형의 메모리 할당 함수 호출은 오브젝트 추적 테이블(115)에 추적을 위한 오브젝트를 등록할 수 있다. 또한, 다수의 메모리 제어기들은 모든 제어기에 동일한 어드레스 범위 및 태그를 등록함으로써 핸들링될 수 있다. 예를 들면, 프로세싱 유닛(105) 상에서 구동하는 애플리케이션 또는 운영 체제(OS)가 주어진 태그에 대한 오브젝트 통계치를 판독할 때, 애플리케이션 또는 OS는 각각의 제어기에 의해 보여지는 바와 같이 별개의 통계치를 얻을 수 있다. 본 출원에서의 예는 메모리 할당 함수 호출에 태그를 부가하는 것을 설명하지만, 이러한 태그들 또는 한정자들은 또한 프로그램 내에서 변수 정의들에 부가될 수 있으며(즉, malloc을 사용하지 않고), 따라서 컴파일러는 그것이 이들 변수들을 위해 메모리를 할당할 때 적절한 태그들을 특정할 수 있다. 이것은 이들 변수들에 대하여 오브젝트 사용에 대한 통계치들을 수집하고 쿼리하기 위한 능력을 허용할 수 있다. 본 출원에서의 설명은 수집된 통계치들에 대한 요청 및/또는 최적화 엔티티로서 애플리케이션, 사용자 프로그램, 소프트웨어 또는 OS를 나타내지만, 다른 유사한 구조물들, 엔티티들 또는 모듈들이 사용될 수 있으며 총괄하여 그것들은 모두 사용자 엔티티 또는 사용자 디바이스로서 불리울 수 있다.
본 출원에서의 예는 메모리 할당 함수 호출에 태그를 부가하는 것을 설명하지만, 이러한 태그들 또는 한정자들은 또한 오브젝트 저장 시스템/아키텍처에서 오브젝트들에 부가될 수 있다. 일반적으로, 오브젝트 저장 장치에서 각각의 오브젝트는 통상적으로 데이터 자체, 가변량의 메타데이터, 및 전역적 고유 식별자를 포함한다. 오브젝트 및 태그는 오브젝트 저장을 위한 오브젝트 할당 지시에서 연관될 수 있다. 대안적으로, 본 출원에서 설명된 태그들은 OS에 의해 제공될 수 있다.
태그는 메모리 할당 함수로부터 리턴된 오브젝트 식별(ID) 파라미터 또는 베이스 포인터일 수 있다. 할당되지 않은 오브젝트 ID들의 프리 리스트 또는 오브젝트 ID들의 풀은 애플리케이션에 의해 또는 애플리케이션들에 의한 사용을 위해 OS에 의해 유지될 수 있다. 리스트 또는 풀은 시스템에 걸쳐 전역적으로 사용될 수 있다. 예를 들면, 태그들은 메모리 액세스들에서 TLB들로부터 픽업될 수 있다(즉, 태그들은 페이지 테이블 엔트리들의 부분으로서 저장된다). 베이스 포인터 태그는 태그로서 오브젝트와 연관된 메모리 어드레스의 시작을 사용한다. 예를 들면, 태그들은 하나 이상의 어드레스 범위들과 연관되며 여기에서 이하에 설명되는 바와 같이 오브젝트 추적 테이블(OTT)로 프로그램될 수 있다. 하나의 오브젝트가 두 개의 범위들로 구성되면, 두 개의 OTT 엔트리들은 두 개의 범위들에 대응하는 동일한 태그를 갖고 할당될 수 있다. 프로그램이 OTT로부터 통계치들을 독출할 때, 프로그램은 통계치들의 양쪽 세트들 모두가 동일한 오브젝트를 나타낸다는 것을 알 것이다. 어느 경우에나, 애플리케이션 및/또는 OS는 프로세스 ID 또는 스레드 번호와 같은 정보를 태그에 덧붙일 수 있다. 프로세스 ID들은 고유하며 태그들 사이에서의 충돌들을 피하기 위해 부가될 수 있다.
베이스 포인터 태그에서, malloc 할당 함수에 의해 리턴된 포인터는 가상 어드레스임이 주의된다. OS는 적절한 물리 어드레스에 가상 어드레스를 매핑시킬 것이며 이러한 변환된/매핑된 물리 어드레스는 OTT로 입력될 것이다. 유사하게, 애플리케이션 또는 프로그램이 가상 어드레스 포인터에 기초하여 OTT로부터 통계치들을 판독하고 검토하길 원할 때, 애플리케이션 또는 프로그램은 OTT에서 엔트리를 검색하기 위해 가상 어드레스로부터 물리 어드레스로의 매핑/변환을 수행하도록 OS에 호출을 해야할 것이다.
물리 페이지들이 런타임시 OS에 의해 재배치될 수 있다는 것이 추가로 주의된다. OS가 물리적으로 페이지를 이동시켰다면, OS는 또한 오브젝트를 계속해서 추적하기 위해 OTT에서 임의의 일치하는 물리 어드레스를 업데이트할 필요가 있을 것이다.
요청된 메모리의 할당 시, OS는 예를 들면, 오브젝트 추적 테이블(115)에 엔트리를 만들기 위해, 지시 또는 명령어를 전송할 수 있다. 지시 또는 명령어는 오브젝트 추적 테이블(115)로 직접(통로(130)를 통해) 또는 메모리 제어기(110)를 통해 오브젝트 추적 테이블(115)로 간접적으로(경로(135)를 통해) 전송될 수 있다. 경로(135)에 대해, 오브젝트 추적 테이블(115)은 메모리 어드레스 공간으로 매핑될 수 있으며 오브젝트 추적 테이블(115)로의 액세스는 정규(캐싱되지 않은) 로드들 및 저장들을 사용하여 행해질 수 있다. 테이블 엔트리는 오브젝트 및 태그와 연관된 메모리 어드레스들을 등록한다. 사실상, 오브젝트 추적 테이블(115)로의 엔트리는 메모리 어드레스들의 범위 내에서의 메모리 어드레스가 참조되고, 요청되고, 액세스 등이 될 때(총괄하여 "참조된"), 메모리 제어기(110)는 관련 오브젝트 또는 태그에 대한 업데이트를 오브젝트 추적 테이블(115)로 전송해야 함을 메모리 제어기(110)에 알린다. 예를 들면, 메모리 제어기(110)는 판독들, 기록들, 비트-플립들 또는 임의의 다른 유사한 이벤트들의 수를 카운트하거나 또는 추적하며 오브젝트 추적 테이블(115)로 업데이트들을 전송할 수 있다.
모든 메모리 참조 시 태그를 검색하는 것을 방지하기 위해, 가장 최근의 태그 검색들의 캐시가 어딘가에 유지될 필요가 있을 수 있다. 모든 메모리 요청은, 페이지 테이블들의 캐시인, TLB를 확인해야 한다. 그러므로, 가장 최근에 사용된 태그들은 TLB에 캐싱될 수 있으며 다른 태그들은 TLB 누락 상에 로딩될 수 있다. 결과적으로, 각각의 메모리 요청에 대해, 메모리 어드레스들 및 태그는 메모리 제어기(110)로 전송될 수 있다. 즉, 메모리 요청은 이제 각각의 판독 또는 기록과 함께 TLB 엔트리로부터 메모리 제어기(110)로 태그(들)를 운반할 수 있다. 메모리 제어기(110)는 그 후 태그를 검색할 필요 없이 오브젝트 추적 테이블(115)을 업데이트할 수 있다. 대안적으로, 가장 최근에 사용된 태그(들)는 각각의 프로세서에 대한 별개의 테이블에 캐싱될 수 있거나, 또는 메모리 제어기(110)에서 별개의 테이블에 캐싱될 수 있다. 이것은 페이지 입도 추적을 제공할 수 있다. 다수의 태그들은 서브-페이지 입도 오브젝트 추적을 지원하기 위해 페이지마다 저장될 수 있다.
오브젝트 추적 테이블(115)은 다수의 동시 태그들의 추적을 수용하도록 사이징될 수 있다. 오브젝트 추적 테이블(115)은 TLB와 유사한 캐시로서 여겨질 수 있으며 오브젝트 추적 테이블(115)이 유지할 수 있는 것보다 많은 활성 태그들이 있다면 메인 메모리(120)로 유입될 수 있다. 오브젝트 추적 테이블은 메인 메모리(120)의 부분으로서, 캐시 또는 유사하게 위치된 디바이스로서 구현될 수 있다.
오브젝트 추적 테이블(115)에서 각각의 엔트리는 태그 및 통계치들의 세트를 가질 수 있다. 통계치들은 태그마다 별도로 추적되며 이에 제한되지 않지만 예를 들면, 판독 및 기록 카운트들, 판독/기록 비, 뱅크 충돌들, 지연 시간, 로우(row) 히트 레이트, 대역폭, 순차적 대 랜덤 부분, 명령어 큐 점유율(큐잉 지연), 간섭성 정보, 판독-전용 또는 수정 가능으로 오브젝트를 지정하는 것, 오브젝트의 예상된 액세스 패턴 특성들을 지정하는 것(순차적, 랜덤, 캐시-친화적 ...), 오브젝트 지속성을 지정하는 것, 비-휘발성 메모리에 유지되기 위한 요구, 할당 위치, 특정 메모리 디바이스 또는 메모리 디바이스 유형에 대한 요구, 보안 특징들, 어떤 프로세서들이 그것을 공유하는지("프로브 필터"), 및 기준 주파수를 포함할 수 있다.
오브젝트 추적 테이블(115)은 또한 쓰기 누락들뿐만 아니라 후기입(write-back)들로 인한 판독들을 계속 파악하고 있을 수 있다. 이들 이벤트들은 트리거링 메모리 요청의 태그를 갖고 태그될 수 있다. 사실상, 오브젝트 추적 테이블(115)은 주어진 태그된 오브젝트로의 액세스들에 의해 초래된 "부작용" 메모리 트래픽을 캡처하고 추적할 수 있다. 예를 들면, 애플리케이션이 캐시 라인으로의 액세스를 요청하면, OS 또는 TLB는 캐시 라인, 즉 오브젝트에 태그를 적용할 수 있다. 캐시 라인을 설치하기 위해, 캐시 제어기는 오브젝트에 관련되지 않을 수 있는 또 다른 캐시 라인을 축출시킬 필요가 있을 수 있다(캐시 축출). 특정한 상황들에서, 애플리케이션은 태그에 대하여, 이러한 캐시 축출 또는 메인 메모리로의 후기입, 즉 "부작용"을 추적하길 원할 수 있다. 결과적으로, 애플리케이션은 요청과 연관된 "부작용들"을 포함한 모든 트래픽을 알고 있다.
OS 또는 애플리케이션은 데이터 배치 판단들을 조정하기 위해 각각의 독립적인 오브젝트에 대한 통계치들을 쿼리할 수 있다. 이것은, 예를 들면, 오브젝트 추적 테이블(115)로 엔트리 판독 명령을 발행함으로써 행해질 수 있다. 애플리케이션은 그 후 어떤 메모리가 다음 메모리 요청을 위해 사용되어야 하는지를 결정하고 지정할 수 있다.
태그는 태그가 애플리케이션에 의해 명확하게 자유로워지거나 또는 메모리가 할당 해제될 때(예로서, free() 호출) 자유롭게 될 수 있다. 태그 및 그것의 통계치들은 오브젝트 추적 테이블(115)로부터 제거될 수 있다. 이것은, 예를 들면, 오브젝트 추적 테이블(115)로 엔트리 삭제 명령을 발행함으로써 행해질 수 있다.
프로세싱 장치(100)가 메모리 계층에 다른 메모리들을 포함하였다면, 메모리 계층의 각각의 레벨은 상기 레벨의 메모리와 연관된 통계치들에 대해 파악하기 위해 오브젝트 추적 테이블을 사용할 수 있다.
본 출원에서 설명된 태그들은 사소한 수의 메모리 액세스들을 가진 오브젝트들을 추적하는 것을 피하기 위해 신뢰 추정기들과 함께 사용될 수 있다. 예를 들면, 신뢰 추정기들은 엔트리가 오브젝트 추적 테이블(115)에 만들어지기 전에 주어진 태그로 적어도 N회 액세스들을 요구할 수 있다. OS는 그 후 태그를 무시하며 오브젝트 추적 테이블(115)에 엔트리를 생성하지 않을 수 있다. 프로세싱 유닛(105) 또는 유사한 디바이스는 최근에 액세스된 메모리 어드레스들 및 임계치를 파악할 수 있다. 액세스들의 수가 임계치에 도달하거나 또는 이를 초과할 때, OS는 그 후 오브젝트 추적 테이블(115)에 엔트리를 생성할 수 있다.
도 2는 특정한 구현들에 따른 오브젝트들을 태그하고 추적하기 위한 예시적인 순서도(200)이다. 순서도(200)는 단지 메인 메모리 액세스들을 추적하는 것에 대해 예시적이다. 다른 순서도들은 청구항들의 범위에서 벗어나지 않고 다른 유형들의 메모리 및 다른 유형들의 명령들 또는 지시들에 대해 구현될 수 있다.
사용자 프로그램(예로서, 애플리케이션)은 태그를 가진 메모리 할당을 요청한다(블록 205). 태그는 오브젝트 ID(Tag로 도시됨), 또는 베이스 포인터로부터 도출된 태그(ObjectPtr로 도시됨)일 수 있다. 메모리 할당 호출은 OS에 의해 핸들링된다(블록 210). 구체적으로, 오브젝트의 어드레스 범위 및 태그는 오브젝트 추적 테이블로 기록된다. 오브젝트 추적 테이블이 어드레스 범위 및 태그를 유지하기에 충분한 공간을 갖지 않는다면, 엔트리는 공간을 풀어주기 위해 메인 메모리로 축출될 수 있으며; 사실상, 오브젝트 추적 테이블을 캐시로 여긴다. 사용자 프로그램은 그 후 실행을 재개한다(블록 215). 메모리 액세스가 마지막 레벨 캐시 누락인지에 대한 결정이 이루어진다(블록 220). 구체적으로, 마지막-레벨 캐시 누락은 메모리 액세스(로드 또는 저장(캐시 후기입))이다. 이것은 단지 메인 메모리 액세스들만이 이 예의 목적들을 위해 오브젝트 추적 테이블에서의 검색을 트리거한다는 것을 보장한다.
그것이 마지막 레벨 캐시 누락이면(블록 222), 오브젝트 추적 테이블에서의 카운터들은 업데이트된다(블록 230). 구체적으로, 어드레스 범위들 및 이벤트들(예로서, 판독들, 기록들, 또는 다른 메모리 이벤트들)이 일치하면, 적절한 카운터들은 증가된다. 마지막 레벨 캐시 누락이 아니면(블록 224), 프로그램이 완료되었는지가 결정된다(블록 240). 프로그램이 완료되지 않았다면(블록 242), 프로그램은 실행을 계속하며(블록 215) 사이클은 처음부터 다시 시작한다. 프로그램이 완료되면(블록 244), 사용자 프로그램은 오브젝트 추적 테이블로부터 오브젝트 통계치들을 획득하기 위해 명령을 전송한다(블록 250). 오브젝트 추적 테이블로부터의 엔트리가 판독되며 사용자 프로그램으로 전송된다(블록 260).
본 출원에서의 설명은 메모리 제어기를 액세스하는 프로세싱 유닛에 관한 것인 반면, 직접 메모리 액세스(DMA) 제어기는 청구항들의 범위로부터 벗어나지 않고, 예를 들면, 상기 설명에 따라 사용될 수 있다. 이 인스턴스에서, 프로세싱 유닛은 바이패스되며 애플리케이션 및 DMA 제어기는 메모리 할당 요청을 프로세싱하기 위해 직접 인터페이스할 것이다. 태그들 및 오브젝트 추적 테이블은 여기에서 서술된 설명에 따라 핸들링될 수 있다.
도 3은 하나 이상의 개시된 예들 또는 구현들의 하나 이상의 부분들이 구현될 수 있는 예시적인 디바이스(300)의 블록도이다. 디바이스(300)는, 예를 들면, 헤드 장착 디바이스, 서버, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋-탑 박스, 텔레비전, 이동 전화, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(300)는 프로세서(302), 메모리(304), 저장 장치(306), 하나 이상의 입력 디바이스들(308), 및 하나 이상의 출력 디바이스들(310)을 포함한다. 디바이스(300)는 또한 선택적으로 입력 드라이버(312) 및 출력 드라이버(314)를 포함할 수 있다. 디바이스(300)가 도 3에 도시되지 않은 부가적인 구성요소들을 포함할 수 있다는 것이 이해된다.
프로세서(302)는 중앙 프로세싱 유닛(CPU), 그래픽스 프로세싱 유닛(GPU), 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함할 수 있으며, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(304)는 프로세서(302)와 동일한 다이 상에 위치될 수 있거나, 또는 프로세서(302)로부터 별도로 위치될 수 있다. 메모리(304)는 휘발성 또는 비-휘발성 메모리, 예를 들면, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함할 수 있다.
저장 장치(306)는 고정 또는 착탈 가능한 저장 장치, 예를 들면, 하드 디스크 드라이브, 고체 상태 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함할 수 있다. 입력 디바이스들(308)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너, 또는 네트워크 연결(예로서, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 근거리 네트워크 카드)을 포함할 수 있다. 출력 디바이스들(310)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 광들, 안테나, 또는 네트워크 연결(예로서, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 근거리 네트워크 카드)을 포함할 수 있다.
입력 드라이버(312)는 프로세서(302) 및 입력 디바이스들(308)과 통신하며, 프로세서(302)가 입력 디바이스들(308)로부터 입력을 수신하도록 허용한다. 출력 드라이버(314)는 프로세서(302) 및 출력 디바이스들(310)과 통신하며, 프로세서(302)가 출력 디바이스들(310)로 출력을 전송하도록 허용한다. 입력 드라이버(312) 및 출력 드라이버(314)는 선택적 구성요소들이며, 디바이스(300)는 입력 드라이버(312) 및 출력 드라이버(314)가 존재하지 않는 경우 동일한 방식으로 동작할 것임이 주의된다.
일반적으로, 오브젝트를 추적하기 위한 방법은 오브젝트와 태그를 연관시키는 것을 포함하며, 여기에서 오브젝트는 메모리 어드레스이다. 방법은 오브젝트 및 태그에 대한 테이블 엔트리를 오브젝트 추적 테이블에 부가하는 것을 추가로 포함하며, 여기에서 오브젝트 추적 테이블은 복수의 메모리 이벤트들에 대한 복수의 오브젝트 통계치들을 유지한다. 방법은, 메모리 제어기에 의해, 연관된 메모리 이벤트의 발생에 대한 오브젝트 통계치를 업데이트하는 것 및 메모리 이용 결정들을 최적화하기 위해 복수의 오브젝트 통계치들을 제공하는 것을 추가로 포함한다. 오브젝트 및 태그는 메모리 할당 지시에서 연관될 수 있다. 오브젝트 및 태그는 변수 정의에 연관될 수 있다. 태그는 메모리 할당 지시의 수신 시 오브젝트와 연관될 수 있다. 테이블 엔트리들은 오브젝트 및 태그에 대한 다수의 오브젝트 추적 테이블들에 입력될 수 있으며, 각각의 오브젝트 추적 테이블은 연관된 메모리 제어기를 갖는다. 태그는 오브젝트 식별 파라미터들의 풀로부터 선택된 오브젝트 식별 파라미터 중 하나이거나 또는 오브젝트와 연관된 베이스 포인터에 기초한다. 태그는 프로세스 식별자 및 스레드 식별자 중 적어도 하나를 포함한다. 테이블 엔트리는 오브젝트 및 태그가 적어도 미리 결정된 휫수들로 액세스되었다면 부가될 수 있다.
일반적으로, 오브젝트를 추적하기 위한 프로세싱 장치는 오브젝트 및 오브젝트와 연관된 태그에 대한 테이블 엔트리를 가진 오브젝트 추적 테이블을 포함하며, 여기에서 오브젝트는 메모리 어드레스이고 오브젝트 추적 테이블은 복수의 메모리 이벤트들에 대한 복수의 오브젝트 통계치들을 유지하며, 복수의 오브젝트 통계치들은 연관된 메모리 이벤트의 발생에 대해 오브젝트 통계치에 대한 테이블 엔트리를 업데이트하는 메모리 제어기 및 메모리 이용 결정들을 최적화하기 위해 사용된다. 오브젝트 및 태그는 메모리 할당 지시에 연관될 수 있다. 오브젝트 및 태그는 변수 정의에 연관될 수 있다. 태그는 메모리 할당 지시의 수신 시 오브젝트와 연관된다. 오브젝트는 오브젝트 저장을 위한 오브젝트 할당 지시에 연관될 수 있다. 프로세싱 장치는 복수의 오브젝트 추적 테이블들 및 복수의 메모리 제어기들을 추가로 포함하며, 여기에서 복수의 오브젝트 추적 테이블들 중 하나 및 복수의 메모리 제어기들 중 하나 사이에 일대일 대응이 있을 수 있고 테이블 엔트리들은 오브젝트 및 태그에 대해 각각의 오브젝트 추적 테이블에 입력된다. 태그는 오브젝트 식별 파라미터들의 풀로부터 선택된 오브젝트 식별 파라미터 중 하나이거나 또는 오브젝트와 연관된 베이스 포인터에 기초한다. 태그는 프로세스 식별자 및 스레드 식별자 중 적어도 하나를 포함한다. 테이블 엔트리는 오브젝트 및 태그가 적어도 미리 결정된 횟수들로 액세스되었다면 부가된다.
일반적으로, 프로세싱 장치에서 실행될 때, 프로세싱 장치가 오브젝트를 추적하기 위한 방법을 실행하게 하는 지시들을 포함한 컴퓨터 판독 가능한 비-일시적 매체로서, 상기 방법은 오브젝트와 태그를 연관시키는 단계로서, 오브젝트는 메모리 어드레스인, 상기 연관시키는 단계, 오브젝트 및 태그에 대한 테이블 엔트리를 오브젝트 추적 테이블에 부가하는 단계로서, 상기 오브젝트 추적 테이블은 복수의 메모리 이벤트들에 대한 복수의 오브젝트 통계치들을 유지하는, 상기 부가 단계, 메모리 제어기에 의해, 연관된 메모리 이벤트의 발생에 대한 오브젝트 통계치를 업데이트하는 단계 및 메모리 이용 결정들을 최적화하기 위해 복수의 오브젝트 통계치들을 제공하는 단계를 포함한다. 태그는 오브젝트 식별 파라미터들의 풀로부터 선택된 오브젝트 식별 파라미터 중 하나이거나 또는 오브젝트와 연관된 베이스 포인터에 기초한다. 태그는 프로세스 식별자 및 스레드 식별자 중 적어도 하나를 포함한다. 오브젝트 및 태그는 메모리 할당 지시에 연관된다. 오브젝트는 오브젝트 저장을 위한 오브젝트 할당 지시에 연관된다.
일반적으로 및 본 출원에서 설명된 구현들을 제한하지 않고, 컴퓨터 판독 가능한 비-일시적 매체는 프로세싱 장치에서 실행될 때 프로세싱 장치로 하여금 오브젝트 태그된 추적을 위한 방법을 실행하게 하는 지시들을 포함한다.
많은 변화들이 본 출원에서의 개시에 기초하여 가능하다는 것이 이해되어야 한다. 특징들 및 요소들은 특정한 조합들로 상기 설명되지만, 각각의 특징 또는 요소는 다른 특징들 및 요소들 없이 단독으로 또는 다른 특징들 및 요소들과 또는 그것 없이 다양하게 조합하여 사용될 수 있다.
제공된 방법들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에 구현될 수 있다. 적절한 프로세서들은, 예로서, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어에 관련한 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, 애플리케이션 특정 집적 회로들(ASIC들), 필드 프로그램 가능한 게이트 어레이들(FPGA들) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 머신을 포함한다. 이러한 프로세서들은 프로세싱된 하드웨어 디스크립션 언어(HDL) 지시들 및 넷리스트들을 포함한 다른 중재자 데이터(이러한 지시들은 컴퓨터 판독 가능한 미디어 상에 저장될 수 있다)의 결과들을 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과들은 그 후 구현들의 양상들을 구현하는 프로세서를 제조하기 위해 반도체 제조 프로세스에서 사용되는 마스크워크들일 수 있다.
여기에서 제공된 방법들 또는 순서도들은 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비-일시적 컴퓨터-판독 가능한 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어에 구현될 수 있다. 비-일시적 컴퓨터-판독 가능한 저장 매체들의 예들은 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 내부 하드 디스크들 및 착탈 가능한 디스크들과 같은 자기 미디어, 자기-광학 미디어, 및 CD-ROM 디스크들, 및 디지털 다목적 디스크들(DVD들)과 같은 광학 미디어를 포함한다.

Claims (20)

  1. 오브젝트를 추적하기 위한 방법에 있어서,
    상기 오브젝트와 태그를 연관시키는 단계로서, 상기 오브젝트는 메모리 어드레스인, 상기 연관시키는 단계;
    상기 오브젝트 및 상기 태그에 대한 테이블 엔트리를 오브젝트 추적 테이블에 부가하는 단계로서, 상기 오브젝트 추적 테이블은 복수의 메모리 이벤트들에 대한 복수의 오브젝트 통계치(statistics)들을 유지하는, 상기 부가하는 단계;
    메모리 제어기에 의해, 연관된 메모리 이벤트의 발생에 대해 오브젝트 통계치를 업데이트하는 단계; 및
    메모리 이용 결정들을 최적화하기 위해 사용자 엔티티에 상기 복수의 오브젝트 통계치들을 제공하는 단계를 포함하는, 오브젝트를 추적하기 위한 방법.
  2. 청구항 1에 있어서,
    상기 오브젝트 및 태그는 메모리 할당 지시에 연관되는, 오브젝트를 추적하기 위한 방법.
  3. 청구항 1에 있어서,
    상기 오브젝트 및 상기 태그는 변수 정의에 연관되는, 오브젝트를 추적하기 위한 방법.
  4. 청구항 1에 있어서,
    상기 태그는 메모리 할당 지시의 수신 시 상기 오브젝트와 연관되는, 오브젝트를 추적하기 위한 방법.
  5. 청구항 1에 있어서,
    테이블 엔트리들은 상기 오브젝트 및 상기 태그에 대해 다수의 오브젝트 추적 테이블들에 입력되며, 각각의 오브젝트 추적 테이블은 연관된 메모리 제어기를 갖는, 오브젝트를 추적하기 위한 방법.
  6. 청구항 1에 있어서,
    상기 태그는 오브젝트 식별 파라미터들의 풀(pool)로부터 선택된 오브젝트 식별 파라미터 중 하나이거나 또는 상기 오브젝트와 연관된 베이스 포인터(base pointer)에 기초하는, 오브젝트를 추적하기 위한 방법.
  7. 청구항 1에 있어서,
    상기 태그는 프로세스 식별자 및 스레드 식별자 중 적어도 하나를 포함하는, 오브젝트를 추적하기 위한 방법.
  8. 청구항 1에 있어서,
    상기 테이블 엔트리는 상기 오브젝트 및 태그가 적어도 미리 결정된 횟수들로 액세스되었다면 부가되는, 오브젝트를 추적하기 위한 방법.
  9. 오브젝트를 추적하기 위한 프로세싱 장치에 있어서,
    상기 오브젝트 및 상기 오브젝트와 연관된 태그에 대한 테이블 엔트리를 가진 오브젝트 추적 테이블로서:
    상기 오브젝트는 메모리 어드레스이고,
    상기 오브젝트 추적 테이블은 복수의 메모리 이벤트들에 대한 복수의 오브젝트 통계치들을 유지하며,
    상기 복수의 오브젝트 통계치들은 메모리 이용 결정들을 최적화하기 위해 사용자 엔티티에 의해 사용되는, 상기 오브젝트 추적 테이블; 및
    연관된 메모리 이벤트의 발생에 대해 오브젝트 통계치에 대한 상기 테이블 엔트리를 업데이트하는 메모리 제어기를 포함하는, 프로세싱 장치.
  10. 청구항 9에 있어서,
    상기 오브젝트 및 상기 태그는 메모리 할당 지시에 연관되는, 프로세싱 장치.
  11. 청구항 9에 있어서,
    상기 오브젝트 및 태그는 오브젝트 저장을 위한 오브젝트 할당 지시에 또는 변수 정의에 연관되는, 프로세싱 장치.
  12. 청구항 9에 있어서,
    상기 태그는 메모리 할당 지시의 수신 시 상기 오브젝트와 연관되는, 프로세싱 장치.
  13. 청구항 9에 있어서,
    복수의 오브젝트 추적 테이블들; 및
    복수의 메모리 제어기들로서:
    상기 복수의 오브젝트 추적 테이블들 중 하나 및 상기 복수의 메모리 제어기들 중 하나 사이에 일대일 대응이 있고, 및
    테이블 엔트리들은 상기 오브젝트 및 상기 태그에 대해 각각의 오브젝트 추적 테이블에 입력되는, 상기 복수의 메모리 제어기들을 더 포함하는, 프로세싱 장치.
  14. 청구항 9에 있어서,
    상기 태그는 오브젝트 식별 파라미터들의 풀로부터 선택된 오브젝트 식별 파라미터 중 하나이거나 또는 상기 오브젝트와 연관된 베이스 포인터에 기초하는, 프로세싱 장치.
  15. 청구항 14에 있어서,
    상기 태그는 프로세스 식별자 및 스레드 식별자 중 적어도 하나를 포함하는, 프로세싱 장치.
  16. 청구항 9에 있어서,
    상기 테이블 엔트리는 상기 오브젝트 및 태그가 적어도 미리 결정된 횟수들로 액세스되었다면 부가되는, 프로세싱 장치.
  17. 프로세싱 장치에서 실행될 때, 상기 프로세싱 장치로 하여금 오브젝트를 추적하기 위한 방법을 실행하게 하는 지시들을 포함한 비-일시적 컴퓨터 판독 가능한 매체에 있어서,
    상기 방법은:
    상기 오브젝트와 태그를 연관시키는 단계로서, 상기 오브젝트는 메모리 어드레스인, 상기 연관시키는 단계;
    상기 오브젝트 및 상기 태그에 대한 테이블 엔트리를 오브젝트 추적 테이블에 부가하는 단계로서, 상기 오브젝트 추적 테이블은 복수의 메모리 이벤트들에 대한 복수의 오브젝트 통계치들을 유지하는, 부가 단계;
    메모리 제어기에 의해, 연관된 메모리 이벤트의 발생에 대해 오브젝트 통계치를 업데이트하는 단계; 및
    메모리 이용 결정들을 최적화하기 위해 사용자 엔티티에 상기 복수의 오브젝트 통계치들을 제공하는 단계를 포함하는, 비-일시적 컴퓨터 판독 가능한 매체.
  18. 청구항 17에 있어서,
    상기 태그는 오브젝트 식별 파라미터들의 풀로부터 선택된 오브젝트 식별 파라미터 중 하나이거나 또는 상기 오브젝트와 연관된 베이스 포인터에 기초하는, 비-일시적 컴퓨터 판독 가능한 매체.
  19. 청구항 17에 있어서,
    상기 태그는 프로세스 식별자 및 스레드 식별자 중 적어도 하나를 포함하는, 비-일시적 컴퓨터 판독 가능한 매체.
  20. 청구항 17에 있어서,
    상기 오브젝트 및 태그는 오브젝트 저장을 위한 오브젝트 할당 지시에 또는 메모리 할당 지시에 연관되는, 비-일시적 컴퓨터 판독 가능한 매체.
KR1020187032346A 2016-04-22 2017-04-17 오브젝트 태그된 메모리 모니터링 방법 및 프로세싱 장치 KR102410348B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/136,851 2016-04-22
US15/136,851 US11061572B2 (en) 2016-04-22 2016-04-22 Memory object tagged memory monitoring method and system
PCT/US2017/027901 WO2017184497A1 (en) 2016-04-22 2017-04-17 Object tagged memory monitoring method and processing apparatus

Publications (2)

Publication Number Publication Date
KR20180128489A true KR20180128489A (ko) 2018-12-03
KR102410348B1 KR102410348B1 (ko) 2022-06-17

Family

ID=60089539

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187032346A KR102410348B1 (ko) 2016-04-22 2017-04-17 오브젝트 태그된 메모리 모니터링 방법 및 프로세싱 장치

Country Status (6)

Country Link
US (1) US11061572B2 (ko)
EP (1) EP3446223A4 (ko)
JP (1) JP6983806B2 (ko)
KR (1) KR102410348B1 (ko)
CN (1) CN109154920B (ko)
WO (1) WO2017184497A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018234246A1 (en) * 2017-06-21 2018-12-27 Tetra Laval Holdings & Finance S.A. METHOD OF LOGGING PROCESS DATA IN AN API CONTROLLED EQUIPMENT
KR102394695B1 (ko) * 2017-11-08 2022-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10776282B2 (en) * 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US10877894B2 (en) 2019-05-16 2020-12-29 Micron Technology, Inc. Memory-side transaction context memory interface systems and methods, wherein first context and first address are communicated on plural wires during different clock cycles and second context (of block of the first context) is communicated on additional wire during one of the different clock cycles
US10877889B2 (en) 2019-05-16 2020-12-29 Micron Technology, Inc. Processor-side transaction context memory interface systems and methods
CN112905405B (zh) * 2019-12-03 2022-12-23 武汉斗鱼鱼乐网络科技有限公司 一种标签数据处理方法、装置和存储介质
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
US11379376B2 (en) 2020-05-20 2022-07-05 Micron Technologies, Inc. Embedding data in address streams
CN112333233B (zh) * 2020-09-23 2023-11-24 北京达佳互联信息技术有限公司 事件信息的上报方法、装置、电子设备及存储介质
JP2022142648A (ja) * 2021-03-16 2022-09-30 富士通株式会社 情報処理装置および復元制御方法
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11829627B2 (en) 2021-08-16 2023-11-28 Micron Technology, Inc. Data migration schedule prediction using machine learning
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity
US20230297556A1 (en) * 2022-03-15 2023-09-21 Cisco Technology, Inc. Content tracking and updating

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010127983A1 (en) * 2009-05-05 2010-11-11 International Business Machines Corporation Virtual machine tool interface for tracking objects
US20130024597A1 (en) * 2011-07-19 2013-01-24 Loh Gabriel H Tracking memory access frequencies and utilization
US20140236911A1 (en) * 2011-04-11 2014-08-21 Sandisk Enterprise Ip Llc Low Level Object Version Tracking Using Non-Volatile Memory Write Generations
US20150032985A1 (en) * 2011-08-24 2015-01-29 Microsoft Corporation Memory allocation analysis

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839739B2 (en) * 1999-02-09 2005-01-04 Hewlett-Packard Development Company, L.P. Computer architecture with caching of history counters for dynamic page placement
US6286092B1 (en) * 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
JP2007094871A (ja) 2005-09-29 2007-04-12 Matsushita Electric Ind Co Ltd メモリ管理装置及びメモリ管理方法
US7941631B2 (en) 2007-12-28 2011-05-10 Intel Corporation Providing metadata in a translation lookaside buffer (TLB)
US9223814B2 (en) 2008-11-20 2015-12-29 Microsoft Technology Licensing, Llc Scalable selection management
JP5618796B2 (ja) 2010-12-02 2014-11-05 株式会社日立製作所 計算機、計算機の制御方法及びプログラム
CN102362464B (zh) * 2011-04-19 2013-01-30 华为技术有限公司 内存访问监测方法和装置
US8626993B2 (en) 2011-11-18 2014-01-07 Apple Inc. Method for tracking memory usages of a data processing system
US8700962B2 (en) 2012-07-27 2014-04-15 Lsi Corporation Scan test circuitry configured to prevent capture of potentially non-deterministic values
US9417988B2 (en) 2013-02-26 2016-08-16 Red Hat, Inc. Tracking subclasses of and operations performed by generic objects in a computer system
US9396030B2 (en) * 2013-03-13 2016-07-19 Samsung Electronics Co., Ltd. Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
US9940286B2 (en) * 2013-03-14 2018-04-10 Nvidia Corporation PCIE traffic tracking hardware in a unified virtual memory system
US20150242312A1 (en) 2013-04-19 2015-08-27 Hitachi, Ltd. Method of managing memory, computer, and recording medium
US9317443B2 (en) * 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US9858140B2 (en) * 2014-11-03 2018-01-02 Intel Corporation Memory corruption detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010127983A1 (en) * 2009-05-05 2010-11-11 International Business Machines Corporation Virtual machine tool interface for tracking objects
US20140236911A1 (en) * 2011-04-11 2014-08-21 Sandisk Enterprise Ip Llc Low Level Object Version Tracking Using Non-Volatile Memory Write Generations
US20130024597A1 (en) * 2011-07-19 2013-01-24 Loh Gabriel H Tracking memory access frequencies and utilization
US20150032985A1 (en) * 2011-08-24 2015-01-29 Microsoft Corporation Memory allocation analysis

Also Published As

Publication number Publication date
EP3446223A1 (en) 2019-02-27
CN109154920A (zh) 2019-01-04
EP3446223A4 (en) 2019-12-04
US20170308297A1 (en) 2017-10-26
JP6983806B2 (ja) 2021-12-17
WO2017184497A1 (en) 2017-10-26
CN109154920B (zh) 2023-07-18
JP2019516179A (ja) 2019-06-13
KR102410348B1 (ko) 2022-06-17
US11061572B2 (en) 2021-07-13

Similar Documents

Publication Publication Date Title
KR102410348B1 (ko) 오브젝트 태그된 메모리 모니터링 방법 및 프로세싱 장치
US10133678B2 (en) Method and apparatus for memory management
US10261916B2 (en) Adaptive extension of leases for entries in a translation lookaside buffer
US10831678B2 (en) Multi-tier cache placement mechanism
US10007614B2 (en) Method and apparatus for determining metric for selective caching
KR102665339B1 (ko) 변환 색인 버퍼 축출 기반 캐시 교체
US20160140042A1 (en) Instruction cache translation management
US10929308B2 (en) Performing maintenance operations
US10078588B2 (en) Using leases for entries in a translation lookaside buffer
US9552301B2 (en) Method and apparatus related to cache memory
CN105573669A (zh) 一种存储系统的io读加速缓存方法和系统
US20180089094A1 (en) Precise invalidation of virtually tagged caches
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US9128856B2 (en) Selective cache fills in response to write misses
US10831673B2 (en) Memory address translation
CN109983538B (zh) 存储地址转换
US10503658B2 (en) Page migration with varying granularity
US20180052778A1 (en) Increase cache associativity using hot set detection
JPWO2015015727A1 (ja) ストレージ装置、データアクセス方法およびデータアクセスプログラム
US10430343B2 (en) Acceleration of cache-to-cache data transfers for producer-consumer communication
US8255632B2 (en) Pre-fetch control apparatus
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US11397691B2 (en) Latency hiding for caches
US10866904B2 (en) Data storage for multiple data types

Legal Events

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