KR20160081765A - 병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20160081765A
KR20160081765A KR1020150106015A KR20150106015A KR20160081765A KR 20160081765 A KR20160081765 A KR 20160081765A KR 1020150106015 A KR1020150106015 A KR 1020150106015A KR 20150106015 A KR20150106015 A KR 20150106015A KR 20160081765 A KR20160081765 A KR 20160081765A
Authority
KR
South Korea
Prior art keywords
block
sets
memory
combination
memory sets
Prior art date
Application number
KR1020150106015A
Other languages
English (en)
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 KR20160081765A publication Critical patent/KR20160081765A/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Power Sources (AREA)

Abstract

컴퓨터 시스템은 구조적 컴포넌트들의 병렬 구조를 나타내는 구조적 프로파일을 결정하는 식별 블록, 및 식별 블록에 연결되고, 병렬 구조를 나타내는 구조적 프로파일에 근거하여 메모리 집합들을 생성하는 배열 블록을 포함한다.

Description

병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법{COMPUTING SYSTEM WITH PARALLEL MECHANISM AND METHOD OF OPERATION THEREOF}
본 발명은 컴퓨팅 시스템에 관련된 것으로, 특히 병렬 매커니즘을 위한 컴퓨팅 시스템 및 그것의 동작 방법에 관련된 것이다.
현대 소비자들과 컴퓨팅 시스템들, 서버들, 가전 제품들, 텔레비전들, 셀룰러 폰들, 자동차들, 위성들, 및 기기들의 조합과 같은 산업 전자기기들은 현대 생활을 지원하기 위해 기능적으로 증가한 레벨들을 제공한다. 성능 요구들이 소비자 제품들과 산업 또는 상업 제품들 사이의 차이일 수 있는 반면, 감소하는 전원 소모하는 동안 그것은 추가적인 성능을 공통적으로 필요로 한다. 존재하는 기술들 내에서 연구와 개발이 다른 방향들로 무수히 수행될 수 있다.
그러한 방향의 하나로 저장하고 액세스하는 정보의 개선을 포함한다. 전자 기기들은 더 작고, 더 가볍고, 더 적은 전원을 필요로 하며, 빠른 메모리의 양은 제한된다. 능률적이고, 효율적으로 사용하는 컴포넌트들 또는 스토리지 배치는 성능과 기능의 증가된 레벨들을 제공할 수 있다.
따라서, 증가된 효율을 통해 전원 소모를 감소하는 반면, 개선된 프로세싱 성능을 위한 병렬 매커니즘을 갖는 컴퓨팅 시스템에 대한 수요는 여전히 남아있다. 계속하여 증가하는 상업적으로 경쟁적인 압박의 관점에서, 소비자의 기대는 증가하고, 시장에서 차별화되는 의미있는 제품을 위한 기회들은 감소하고, 이러한 문제들의 답을 발견하는 것은 점차 중요해지고 있다. 추가적으로, 비용의 감소, 효율 및 성능의 개선, 및 경쟁적인 압박에 직면한 수요는 이러한 문제들을 위한 해답을 찾기 위한 중요한 필요성으로 인해 매우 더 긴급히 추가된다.
이러한 문제들의 해결책들은 오랫동안 찾아진 반면, 이전 개발들은 어떤 해결책들을 교시하거나 제안하지 못함으로서, 이러한 문제들의 해결 방안은 해당 기술 분야에서 오랫동안 이룰 수 없었다.
본 발명의 목적은 전원 소모를 최소화하면서도 프로세싱 성능을 향상시킬 수 있는 병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법을 제공함에 있다.
본 발명에 따른 컴퓨팅 시스템은 구조적 컴포넌트들의 병렬 구조를 나타내기 위한 구조적 프로파일을 결정하는 식별 블록, 및 상기 식별 블록에 연결되고, 상기 병렬 구조를 나타내기 위한 구조적 프로파일에 근거하여 메모리 집합들을 생성하는 배열 블록을 포함한다.
이 실시예에 있어서, 상기 식별 블록은 상기 식별 블록으로 액세스할 수 있는 입상도 레벨에 근거하여 구조적 프로파일을 결정하고, 상기 배열 블록은 상기 입상도 레벨의 가장 낮은 인스턴스에 근거하여 상기 메모리 집합들을 생성한다.
이 실시예에 있어서, 하나 이상의 메모리 집합들에 연관된 불규칙 상태에 응답하여 상기 하나 이상의 메모리 집합들 또는 그것의 일부를 교체하기 위한 하나 이상의 조정된 집합들을 동적으로 생성하는 조정 블록을 더 포함한다.
이 실시예에 있어서, 하나 이상의 구조적 컴포넌트들을 제어하기 위해 현재 수요에 근거하여 사용가능 자원 프로파일을 조정하는 균형 블록을 더 포함한다.
이 실시예에 있어서, 상기 식별 블록은 상기 병렬 구조를 반영하는 상기 하나 이상의 메모리 집합들을 나타내기 위한 비선형 액세스 매커니즘에 따라 적합한 이용가능 집합을 생성한다.
이 실시예에 있어서, 상기 식별 블록은 저장 유닛 내 상기 구조적 컴포넌트의 병렬 구조를 나타내기 위한 구조적 프로파일을 결정하고, 상기 배열 블록은 부팅 매커니즘을 위한 상기 병렬 구조를 나타내기 위한 상기 구조적 프로파일에 근거하여 메모리 집합들을 생성하고, 운영 체제의 액티브 상태 동안 상기 병렬 구조를 나타내기 위한 메모리 집합들을 동적으로 조절한다.
이 실시예에 있어서, 상기 배열 블록은 제 1 뱅크 컴포넌트와 제 2 뱅크 컴포넌트의 병렬 구조를 매칭하기 위한 제 1 페이지와 제 2 페이지를 생성한다.
이 실시예에 있어서, 상기 배열 블록에 연결되고, 상기 하나 이상의 메모리 집합들에 액세스를 위한 액티브 상태 동안 상기 불규칙 상태를 검출하는 상태 블록, 상기 상태 블록에 연결되고, 상기 액티브 상태 동안 상기 불규칙 상태에 연관된 상기 하나 이상의 메모리 집합들 내 대립 소스를 식별하는 소스 블록, 및 상기 소스 블록에 연결되고, 상기 불규칙 상태에 응답하여 운영 체제의 동작 동안 대립 소스에 연관된 상기 메모리 집합들 또는 그것의 일부를 교체하기 위한 대립 소스에 근거하여 조정된 집합들을 동적으로 생성하는 리매핑 블록을 더 포함한다.
이 실시예에 있어서, 상기 배열 블록에 연결되고, 프로세싱 용량에 연관된 현재 수요를 계산하는 조건 블록, 및 상기 프로세싱 용량을 최적화하기 위한 상기 구조적 컴포넌트들을 제어하기 위한 상기 현재 수요에 근거하여 이용가능 리소스 프로파일을 조정하는 관리 블록을 포함한다.
이 실시예에 있어서, 상기 배열 블록에 연결되고, 전원 소모에 연관된 현재 수요를 계산하는 조건 블록, 및 상기 조건 블록에 연결되고, 상기 전원 소모를 최적화하기 위한 구조적 컴포넌트들을 제어하기 위한 현재 수요에 근거하여 이용가능 리소스 프로파일을 조정하는 관리 블록을 포함한다.
본 발명에 따른 컴퓨팅 시스템의 동작 방법은 구조적 컴포넌트들의 병렬 구조를 나타내기 위한 구조적 프로파일을 결정하는 단계, 및 상기 병렬 구조를 나타내기 위한 구조적 프로파일에 근거하여 제어 유닛에 대한 메모리 집합들을 생성하는 단계를 포함한다.
이 실시예에 있어서, 상기 구조적 프로파일을 결정하는 단계는 상기 식별 블록으로 액세스 가능한 입상도 레벨에 근거하여 구조적 프로파일을 결정하는 단계를 포함하고, 상기 메모리 집합들을 생성하는 단계는 상기 입상도 레벨의 가장 낮은 인스턴스에 근거하여 상기 메모리 집합들을 생성하는 단계를 포함한다.
이 실시예에 있어서, 하나 이상의 메모리 집합들에 연관된 불규칙 상태에 응답하여 상기 하나 이상의 메모리 집합들 또는 그것의 일부를 교체하기 위해 하나 이상의 조정된 집합을 동적으로 생성하는 단계를 더 포함한다.
이 실시예에 있어서, 하나 이상의 상기 구조적 컴포넌트들을 제어하기 위한 현재 수요에 근거하여 이용가능 리소스 프로파일을 조정하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 병렬 구조를 반영하는 하나 이상의 상기 메모리 집합들을 나타내기 위한 비선형 액세스 매커니즘에 따른 적합한 이용가능 집합들을 생성하는 단계를 더 포함한다.
본 발명에 따른 컴퓨팅 시스템을 위한 인스트럭션들을 포함하는 비일시적 컴퓨터 읽기가능 매체는 구조적 컴포넌트들의 병렬 구조를 나타내기 위한 구조적 프로파일의 결정, 및 상기 병렬 구조를 나타내기 위한 상기 구조적 프로파일에 근거하여 메모리 집합들을 생성한다.
이 실시예에 있어서, 상기 구조적 프로파일의 결정은 식별 블록으로 액세스 가능한 입상도 레벨에 근거하여 상기 구조적 프로파일을 결정하고, 상기 메모리 집합들을 생성은 상기 입상도 레벨의 가장 낮은 인스턴스에 근거하여 상기 메모리 집합들을 생성한다.
이 실시예에 있어서, 하나 이상의 메모리 집합들에 연관된 불규칙 상태에 응답하여 상기 하나 이상의 메모리 집합들 또는 그것의 일부를 교체하기 위한 하나 이상의 조정된 집합들을 동적으로 생성한다.
이 실시예에 있어서, 하나 이상의 구조적 컴포넌트들을 제어하기 위한 현재 수요에 근거하여 이용가능 리소스 프로파일을 조정한다.
이 실시예에 있어서, 상기 병렬 구조를 반영하는 하나 이상의 메모리 집합들을 나타내는 비선형 액세스 매커니즘에 따른 적합한 이용가능 집합들을 생성한다.
본 발명에서 제안된 병렬 메커니즘을 갖는 컴퓨팅 시스템은 구조적 컴포넌트들의 병렬 구조를 나타내기 위한 구조적 프로파일을 이용함에 따라 전원 소모를 최소화하는 동안 개선된 프로세싱 성능을 제공할 수 있다.
도 1은 본 발명에 따른 병렬 매커니즘을 갖는 컴퓨팅 시스템의 예시적인 도면,
도 2는 본 발명에 따른 컴퓨팅 시스템의 예시적인 실시예를 더 상세히 도시한 도면,
도 3은 본 발명에 따른 컴퓨팅 시스템의 예시적인 순서도,
도 4는 본 발명에 따른 동작 내 펌웨어 레지스터를 예시적으로 도시한 도면, 및
도 5는 본 발명에 따른 컴퓨팅 시스템의 동작 방법을 예시적으로 도시한 순서도이다.
다음의 실시예들은 메모리 유닛을 위한 구조적 컴포넌트의 병렬 구조에 따라 구성된 메모리 집합들을 포함한다. 메모리 집합들은 운영 체제의 동작 동안 적합한 병렬 집합들을 사용한 비순차적 또는 병렬 액세스를 위해 구성될 수 있다. 메모리 집합들은 대립 소스들을 결정하고, 실행 시간 동안 대립 소스에 근거하여 조절된 집합들의 생성에 근거한 불규칙 상태에 응답하여 동적으로 재구성되는 것을 추가할 수 있다.
메모리 집합들은 실행 시간 동안 전원 소모, 프로세싱 용량, 및 그것들의 조합의 밸런스를 위해 사용되는 것을 추가할 수 있다. 메모리 집합들을 관리하는 이용가능 리소스 프로파일은 전원 소모, 프로세싱 용량, 또는 그것들의 조합의 밸런싱에 대한 구조적 컴포넌트들의 제어를 위해 생성될 수 있다.
다음 실시예들은 발명을 만들고 사용하기 위해 해당 기술분야에서 실시 가능하도록 충분히 상세히 기술된다. 그것은 본 발명의 실시예들의 범위로부터 벗어나지 않도록 만들어질 수 있는 시스템, 프로세스, 구조적인, 또는 기계적인 변환들과 같은 본 발명에 기재된 것에 근거한 증거들일 수 있는 다른 실시예들로 이해될 수 있다.
다음의 기술들에서, 수많은 특정 상세들이 발명의 이해를 통해 제공되도록 주어질 수 있다. 그러나, 이러한 특정 상세들없이 실행될 수 있는 발명과 다양한 실시예들이 명백할 것이다. 본 발명이 모호해지는 것을 회피하기 위해, 일부 공지된 회로들, 시스템 구성들, 및 프로세스 스텝들은 상세히 기술되지 않는다.
시스템의 실시예들을 보여주는 도면들은 제한적으로 도식되고, 비율로 한정되지 않고, 특히, 차원들 중 일부는 보여주는 것을 명확히 하기 위해 도시된 도면들 내 과장되도록 도시될 수 있다. 마찬가지로, 비록 설명의 편의를 위한 도면들 내 시점들이 유사한 방향을 일반적으로 보여주더라도, 이 도면들 내의 묘사는 대부분의 부분에서 임의로 설정된다. 일반적으로 본 발명은 임의의 방향에서 동작할 수 있다.
여기에 나타낸 블록의 용어는 그 용어가 사용된 문맥에 따라 본 발명의 실시예 내에서 소프트웨어, 하드웨어, 또는 그것들의 조합을 포함한다. 예를 들면, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 응용 소프트웨어일 수 있다. 또 예를 들면, 하드웨어는 회로, 프로세서, 컴퓨터, 집적 회로, 집적된 회로 코어들, 및 압력 센서, 및 관성 센서, 미세전자기계시스템(MEMS: microelectromechanical system), 수동 장치, 또는 그것들의 조합일 수 있다. 더욱이, 블록은 하기에서 장치 청구항들로 기술되면, 블록들은 장치 청구항들의 범위와 목적을 위한 하드웨어 회로를 포함한 것으로 간주할 수 있다.
실시예들의 다음과 같은 기재 내 블록들은 묘사되거나 보이는 바와 같이 다른 하나에 연결될 수 있다. 연결은 연결된 아이템들 사이의 중간 아이템들에 각각 과 함께 또는 없이 직접 또는 간접일 수 있다. 연결은 아이템들 사이의 물리적 접촉 또는 통신에 의한 것일 수 있다.
도 1은 본 발명에 따른 병렬 매커니즘을 갖는 컴퓨팅 시스템의 예시적인 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 장치(102)를 포함할 수 있다. 장치(102)는 클라이언트 장치, 서버, 디스플레이 인터페이스, 사용자 인터페이스 장치, 웨어러블 장치, 가속기, 포털 또는 편의 장치, 또는 그것들의 조합을 포함할 수 있다.
장치(102)는 제어 유닛(control unit)(112), 저장 유닛(storage unit)(114), 통신 유닛(communication unit)(116), 및 사용자 인터페이스(user interface)(118)를 포함할 수 있다. 제어 유닛(112)은 제어 인터페이스(122)를 포함할 수 있다. 제어 유닛(112)은 컴퓨팅 시스템(100)의 소프트웨어(126)를 실행시킬 수 있다.
일 실시예에서, 제어 유닛(112)은 컴퓨팅 시스템(100)으로 프로세싱 역량과 기능을 제공한다. 제어 유닛(112)은 다수의 다른 방법들로 구현될 수 있다. 예를 들면, 제어 유닛(112)은 주문형 반도체(ASIC: application specific integrated circuit), 임베디드 프로세서, 마이크로프로세서, 중앙 처리 장치(CPU: central processing unit), 필드 프로그래머블 게이트 어레이(FPGA: field programmable gate array), 하드웨어 제어 로직, 하드웨어 유한 상태 머신(FSM: finite state machine), 디지털 신호 프로세서(DSP: digital signal processor), 컴퓨팅 능력을 갖는 하드웨어 회로, 또는 그것들의 조합을 포함하는 프로세서 또는 그것의 일부일 수 있다.
추가적인 예로서, 다양한 실시예들이 단일 집적 회로 상에 구현, 시스템 케이싱(system casing) 내의 확장 카드(daughter card) 또는 시스템 보드 상의 컴포넌트들과 함께 구현 또는 다양한 네트워크 토폴로지들에 교차하는 시스템을 위해 시스템으로부터 분배되어 구현, 또는 그것들의 조합으로 구현될 수 있다. 네트워크 토폴로지들의 예로, 개인 영역 네트워크(PAN: personal area network), 근거리 영역 네트워크(근거리 통신망)(LAN: local area network), 스토리지 영역 네트워크(SAN: storage area network), 도시권 영역 네트워크(도시권 통신망)(MAN: metropolitan area network), 와이드 영역 네트워크(광대역 통신망)(WAN: wide area network), 또는 그것들의 조합을 포함한다.
제어 인터페이스(122)는 장치(102) 내에서 제어 유닛(112)과 다른 기능 유닛들 사이의 통신에 사용될 수 있다. 제어 인터페이스(122)는 장치(102) 외부의 통신을 위해 사용될 수도 있다.
제어 인터페이스(122)는 다른 방법들로 구현될 수 있고, 제어 인터페이스(122)와 인터페이스되는 기능 유닛들 또는 외부 유닛들에 따른 다른 구현들을 포함할 수 있다. 예를 들면, 제어 인터페이스(122)는 압력 센서(pressure sensor), 관성 센서(inertial sensor), 미세전자기계 시스템(MEMS: microelectromechanical system), 광 회로(optical circuitry), 도파관(waveguide)들, 무선 회로(wireless circuitry), 와이어라인 회로(wireline circuitry), 및 그것들의 조합으로 구현될 수 있다.
저장 유닛(114)은 소프트웨어(126)를 저장할 수 있다. 저장 유닛(114)은 데이터, 이미지들, 프로그램들, 음성 파일들, 또는 그것들의 조합과 같은 관련 정보들을 저장할 수도 있다. 저장 유닛(114)은 추가적인 저장 용량을 제공하기 위한 크기일 수 있다.
저장 유닛(114)은 휘발성 메모리, 비휘발성 메모리, 내부 메모리, 외부 메모리, 또는 그것들의 조합일 수 있다. 예를 들면, 저장 유닛(114)은 비휘발성 랜덤 액세스 메모리(NVRAM: non-volatile random access memory), 플래시 메모리, 디스크 스토리지와 같은 비휘발성 스토리지, 또는 정적 랜덤 액세스 메모리(SRAM: static random access memory), 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory), 임의의 메모리 기술, 또는 그것들의 조합과 같은 휘발성 스토리지, 또는 그것들의 조합일 수 있다.
저장 유닛(114)은 저장 인터페이스(124)를 포함할 수 있다. 저장 인터페이스(124)는 장치(102) 내 다른 기능 유닛들과의 통신에 사용될 수 있다. 저장 인터페이스(124)는 장치(102) 외부로의 통신을 위해 사용될 수도 있다.
저장 인터페이스(124)는 다른 기능 유닛들 또는 외부 소스들로부터 정보를 수신할 수 있거나, 다른 기능 유닛들 또는 외부 소스들로 정보를 전송할 수 있다. 외부 소스들과 외부 목적지들은 장치(102) 외부의 소스들과 목적지들을 나타낸다.
스토리지 인터페이스(124)는 기능 유닛들에 따른 다른 구현들을 포함할 수 있고, 외부 유닛은 저장 유닛(114)과 인터페이스된다. 스토리지 인터페이스(124)는 제어 인터페이스(122)의 구현과 유사한 기술들 및 기법들로 구현될 수 있다.
목적들을 구체화하기 위해, 저장 유닛(114)은 단일 엘리먼트로 보여주고 있으나, 저장 유닛(114)은 저장 엘리먼트들로 분배될 수 있는 것으로 이해될 수 있다. 또한, 목적들을 구체화하기 위해, 컴퓨팅 시스템(100)은 단일 하이어러키 스토리지 시스템(single hierarchy storage system)으로서 저장 유닛(114)을 도시하였으나, 컴퓨팅 시스템은 다른 구성의 저장 유닛(114)을 가질 수 있다. 예를 들면, 저장 유닛(114)은 캐싱, 메인 메모리, 회전 미디어, 또는 오프라인 스토리지의 다른 레벨을 포함하는 메모리 하이어러키얼 시스템을 형성하는 다른 저장 기술들로 형성될 수 있다.
통신 유닛(116)은 장치(102)로 또는 장치(102)로부터의 외부 통신을 가능하게 할 수 있다. 예를 들면, 통신 유닛(116)은 주변 장치, 통신 경로(미도시), 또는 그것들의 조합과 같이 부착된 제 2 장치(미도시)와 통신을 허용한다.
통신 유닛(116)은 통신 경로의 일부로서의 기능을 위한 장치(102)를 허용하는 통신 허브와 같은 기능을 할 수도 있고, 통신 경로에서 엔드 포인트 또는 단말 유닛으로 제한되지 않는다. 통신 유닛(116)은 통신 경로와 상호작용을 위한 마이크로일렉트로닉스(microelectronics), 또는 안테나와 같은 능동 및 수동 컴포넌트들을 포함할 수 있다.
통신 유닛(116)은 통신 인터페이스(128)를 포함할 수 있다. 통신 인터페이스(128)는 장치(102) 내 통신 유닛(116)과 다른 기능 유닛들 사이의 통신을 위해 사용될 수 있다. 통신 인터페이스(128)는 다른 기능 유닛들로부터 정보를 수신할 수 있고, 다른 기능 유닛들로 정보를 전송할 수 있다.
통신 인터페이스(128)는 통신 유닛(116)과 인터페이스되는 기능 유닛들에 따른 다른 구현을 포함할 수 있다. 통신 인터페이스(128)는 제어 인터페이스(122), 저장 인터페이스(124), 또는 그것들의 조합의 구현과 유사한 기술들 및 기법들로 구현될 수 있다.
사용자 인터페이스(118)는 장치(102)와 인터페이스 및 상호 작용을 위한 사용자(미도시)를 허용한다. 사용자 인터페이스(118)의 입력 장치의 예들은 데이터와 통신 입력들을 제공하기 위한 키패드(keypad), 터치패드(touch pad), 소프트키(soft-key)들, 키보드(keyboard), 마이크로폰, 원격 신호들을 수신하기 위한 적외선 센서(infrared sensor), 다른 입력 장치들, 또는 그것들의 조합을 포함할 수 있다.
사용자 인터페이스(118)는 디스플레이 인터페이스(130)를 포함할 수 있다. 디스플레이 인터페이스(130)는 디스플레이, 프로젝터, 비디오스크린, 스피커, 또는 그것들의 임의의 조합을 포함할 수 있다.
제어 유닛(112)은 컴퓨팅 시스템(100)에 의해 생성된 정보를 디스플레이하기 위해 사용자 인터페이스(118)를 동작시킬 수 있다. 제어 유닛(112)은 컴퓨팅 시스템(100)의 다른 기능들을 위한 소프트웨어(126)를 실행시킬 수도 있다. 제어 유닛(112)은 통신 유닛(116)을 통해 통신 경로와 상호 작용하기 위한 소프트웨어(126)를 추가로 실행시킬 수 있다.
장치(102)는 다중 장치 실시예들 내 컴퓨팅 시스템(100)의 실시예의 구현을 위해 최적화될 수도 있다. 장치(102)는 추가적이거나 고성능 프로세싱 전원을 제공할 수 있다.
목적들을 구체화하기 위해, 장치(102)는 사용자 인터페이스(118), 저장 유닛(114), 제어 유닛(112), 및 통신 유닛(116)을 분할하여 도시하더라도, 장치(102)는 임의의 다른 분할을 가질 수 있다. 예를 들면, 소프트웨어(126)는 제어 유닛(112)과 통신 유닛(116) 내에 있을 수 있는 적어도 어떤 기능과 같이 다르게 분할될 수 있다. 또한, 장치(102)는 명확히 하기 위해 도시되지 않은 다른 기능 유닛들을 포함할 수 있다.
장치(102) 내 기능 유닛들은 다른 기능 유닛들의 개별적이고 독립적인 작업을 할 수 있다. 목적들을 구체화하기 위해, 컴퓨팅 시스템(100)은 장치(102)의 동작에 의해 기술될 수 있으나, 컴퓨팅 시스템(100)의 임의의 프로세스들과 기능들로 동작할 수 있는 것으로 이해될 수 있다.
이러한 응용들 내 프로세스들은 제어 유닛(112) 내 하드웨어 구현들, 하드웨어 회로, 또는 하드웨어 가속기들일 수 있다. 프로세스들은 제어 유닛(112)의 외부에 있으나, 장치(102) 내 구현될 수도 있다.
이러한 응용들 내 프로세스들은 소프트웨어(126)의 일부일 수 있다. 이러한 프로세스들은 저장 유닛(114) 내 저장될 수도 있다. 제어 유닛(112)은 컴퓨팅 시스템(100)을 동작하기 위한 이러한 프로세스들을 실행시킬 수 있다.
도 2는 본 발명에 따른 컴퓨팅 시스템의 예시적인 실시예를 더 상세히 도시한 도면이다.
도 2를 참조하면, 컴퓨팅 시스템(100)의 저장 유닛(114)은 구조적 컴포넌트들(204)을 포함할 수 있다. 구조적 컴포넌트들(204)은 저장 유닛(114)을 위한 장치 또는 그것의 일부일 수 있다.
구조적 컴포넌트들(204)은 병렬 구조(216)에 따라 배열될 수 있다. 병렬 구조(216)는 병렬 액세스 또는 그것의 사용을 위한 구조적 컴포넌트들(204)의 배열 또는 구성이다. 병렬 구조(216)는 액세스하는 데이터 내 다중 그룹핑들 또는 경로들로 동시에 액세스하는 것에 근거할 수 있다. 병렬 구조(216)는 어드레싱 또는 전기적 접속들, 리던던시, 관련된 전기적인 접속들, 또는 그것들의 조합과 같은 액세스의 이용률에 근거할 수 있다.
병렬 구조(216)는 다중 분리 위치들, 독립적인 위치들, 또는 그것들의 조합에서 데이터를 동시에 액세스하기 위한 것을 추가할 수 있다. 예를 들면, 병렬 구조(216)는 도 1의 제어 유닛(112), 저장 유닛(114)의 다중 분리 인스턴스들, 및 그것들의 조합을 위한 것과 같은 코어들의 다중 인스턴스에 연관될 수 있다. 또 예를 들면, 병렬 구조(216)는 다양한 컴포넌트들 또는 DRAM 내에 있는 것을 위한 병렬 아키텍쳐, 액세스, 또는 그것들의 조합을 위한 저장 유닛(114)에 따른 DRAM의 병행성에 연관될 수 있다.
목적들을 구체화하기 위해, 병렬 구조(parallel structure)(216)는 DRAM을 사용한 전형적인 예로 논의될 수 있다. 그러나, 병렬 구조(216)는 도 1의 유닛들, RAM의 다른 타입들 또는 비휘발성 메모리와 같은 다른 메모리 아키텍쳐, 또는 그것들의 조합의 사이와 같은 다른 부분들 또는 하이어러키로 적용될 수 있다.
구조적 컴포넌트들(204)은 정보를 위한 저장, 삭제, 관리, 업데이트, 또는 그것들의 조합을 위한 회로를 포함할 수 있다. 예를 들면, 구조적 컴포넌트들(204)은 채널들(206), 모듈들(208), 랭크들(210), 칩들(212), 뱅크들(214), 또는 그것들의 조합을 포함할 수 있다. 채널들(206)은 저장 유닛(114) 내 독립적으로 접근 가능한 구조들 또는 그룹핑들을 포함할 수 있다. 채널들(206)은 유선 또는 전기적인 접속과 같은 독립된 액세스 경로 또는 분리된 액세스 방식을 각각 나타낼 수 있다. 채널들(206)은 가장 높은 레벨 구조일 수 있다.
모듈들(208)은 정보를 저장하기 액세스하기 위해 구성된 회로 각각일 수 있다. 모듈들(208)은 정보를 저장하고 액세스하기 위해 구성된 저장 유닛(114) 내 회로 각각일 수 있다. 모듈들(208)의 하나 이상의 집합들은 채널들(206) 각각을 통해 액세스할 수 있다.
모듈들(208)은 RAM을 포함할 수 있다. 예를 들면, 모듈들(208) 각각은 인쇄 회로 기판(printed circuit board) 또는 거기에 마운트된 집적 회로(integrated circuitry) 내 카드를 포함한다. 저장 유닛(114)은 채널들(206), 모듈들(208), 그것의 컴포넌트 또는 부분들, 또는 그것들의 조합을 포함할 수 있다. 예를 들면, 모듈들(208)은 휘발성 또는 비휘발성 메모리, NVRAM, SRAM, DRAM, 플래시 메모리(Flash memory), 그것의 컴포넌트 또는 부분, 또는 그것들의 조합을 포함할 수 있다.
랭크들(210)은 모듈들(208)의 정보 용량의 서브 유닛들 또는 그룹핑일 수 있다. 모듈들(208)의 각 인스턴스 또는 존재는 랭크들(210)을 포함할 수 있다. 랭크들(210)은 동일 어드레스들, 동일 데이터 버스들, 그것의 부분들, 또는 그것들의 조합을 공유하는 서브 유닛들 또는 그룹핑일 수 있다. 랭크들(210)의 하나 이상의 집합들은 채널들(206)에 해당하는 인스턴스를 통해 모듈들(208) 각각 내 액세스될 수 있다.
칩들(212)은 거기에 정보를 저장하기 위해 구성된 회로의 유닛 각각일 수 있다. 칩들(212)은 모듈들(208) 내 각각으로 만들어지는 회로들이 집적된 컴포넌트일 수 있다. 모듈들(208), 랭크들(210), 그것들의 조합의 인스턴스 각각은 칩들(212)을 포함할 수 있다.
랭크들(210) 각각은 하나 이상의 칩들(212), 칩들(212) 중 하나 내의 일부, 또는 그것들의 조합에 대응될 수 있다. 랭크들(210)은 로우 레벨 어드레싱 내 칩 선택을 사용하여 선택될 수 있다. 랭크(210)들 내 칩들(212)의 하나 이상의 집합들은 채널들(206), 모듈들(208), 또는 그것들의 조합에 해당하는 인스턴스를 통해 액세스될 수 있다.
뱅크들(214)은 칩들(212)을 위한 데이터 스토리지를 위한 서브 유닛들일 수 있다. 칩들(212)의 인스턴스들은 뱅크들(214)을 포함할 수 있다. 뱅크들(214) 각각은 칩들(212) 각각 내에 회로의 유닛 또는 그룹핑일 수 있다. 챕들(212) 내 뱅크들(214)의 하나 이상의 집합들은 채널들(206), 모듈들(208), 랭크들(210), 또는 그것들에 해당하는 조합을 통해 액세스될 수 있다.
예를 들면, 구조적 컴포넌트들(204)은 채널들(206)에 따라 배열될 수 있다.채널들(206)은 모듈들(208)의 독립적이거나 중복되는 집합들을 액세스하기 위한 것일 수 있다. 모듈들(208) 각각은 랭크들(210)을 포함할 수 있다. 랭크들(210) 각각은 칩들(212)에 대응될 수 있다. 칩들(212) 각각은 뱅크들(214)을 포함할 수 있다.
또 예를 들면, 병렬 구조(216)는 채널들(206), 모듈들(208), 랭크들(210), 칩들(212), 뱅크들(214), 또는 그것들의 조합의 다중 인스턴스들을 위한 것일 수 있다. 더 상세한 예로서, 병렬 구조(216)는 제 1 채널 컴포넌트(channel component )(218)와 제 2 채널 컴포넌트(220)를 포함한 채널들(206), 제 1 모듈 컴포넌트(module component)(222)와 제 2 모듈 컴포넌트(224)를 포함하는 모듈들(208), 제 1 랭크 컴포넌트(rank component)(226)와 제 2 랭크 컴포넌트(228)를 포함하는 랭크들(210), 제 1 칩 컴포넌트(chip component)(230)와 제 2 칩 컴포넌트(232)를 포함하는 칩들(212), 제 1 뱅크 컴포넌트(bank component)(234)와 제 2 뱅크 컴포넌트(236)를 포함하는 뱅크들(214)에 대한 것일 수 있다.
제 1 채널 컴포넌트(218)와 제 2 채널 컴포넌트(220)는 채널들(206)의 하나일 수 있다. 제 1 채널 컴포넌트(218)와 제 2 채널 컴포넌트(220)는 상호 간에 관련하여 분리, 독립, 또는 그것들의 조합일 수 있다. 제 1 채널 컴포넌트(218)와 제 2 채널 컴포넌트(220)는 액세스하는 정보 내 병렬 구조(216)를 위해 상호 간에 동시에 또는 독립적으로 액세스 가능할 수 있다.
유사하게, 제 1 모듈 컴포넌트(222)와 제 2 모듈 컴포넌트(224)는 모듈들(208)의 하나일 수 있으며, 상호 간에 관련하여 분리, 독립, 또는 그것들의 조합일 수 있고, 병렬 구조(216)를 위해 상호 간에 동시에 또는 독립적으로 액세스 가능할 수 있다. 유사하게, 제 1 랭크 컴포넌트(226)와 제 2 랭크 컴포넌트(228)는 랭크들(210)의 하나일 수 있으며, 상호 간에 관련하여 분리, 독립, 또는 그것들의 조합일 수 있고, 병렬 구조(216)를 위해 상호 간에 동시에 또는 독립적으로 액세스 가능할 수 있다.
유사하게, 제 1 칩 컴포넌트(230)와 제 2 칩 컴포넌트(232)는 칩들(212)의 하나일 수 있으며, 상호 간에 관련하여 분리, 독립, 또는 그것들의 조합일 수 있고, 병렬 구조(216)를 위해 상호 간에 동시에 또는 독립적으로 액세스 가능할 수 있다. 유사하게, 제 1 뱅크 컴포넌트(234)와 제 2 뱅크 컴포넌트(236)는 뱅크들(214)의 하나일 수 있으며, 상호 간에 관련하여 분리, 독립, 또는 그것들의 조합일 수 있고, 병렬 구조(216)를 위해 상호 간에 동시에 또는 독립적으로 액세스 가능할 수 있다.
목적들을 구체화하기 위해, 컴퓨팅 시스템(100)은 상술한 바와 같이 특정 컴포넌트들 또는 하이어러키를 갖는 구조적 컴포넌트들(204)을 이용하는 것으로 위에서 기술되었다. 그러나, 구조적 컴포넌트들(204)은 다른 컴포넌트들 또는 하이어러키들을 포함할 수 있다. 예를 들면, 뱅크(214)는 회로의 더 낮은 레벨을 포함할 수 있다. 또 예를 들면, 저장 유닛(114)은 장치들 또는 회로들을 위한 다른 그룹핑들을 포함할 수 있다.
컴퓨팅 시스템(100)은 부팅 매커니즘(booting mechanism)(238)을 포함할 수 있다. 부팅 매커니즘(238)은 컴퓨팅 시스템(100)을 초기화하기 위한 프로세스, 방법, 프로세스 또는 방법을 구현하기 위한 회로, 또는 그것들의 조합이다. 부팅 매커니즘(238)은 하드웨어 입력 또는 소프트웨어 커맨드를 통한 것과 같은, 컴퓨팅 시스템(100)으로 공급되는 전원이 초기화된 이후 또는 컴퓨팅 시스템(100)이 리셋된 이후 컴퓨팅 시스템(100)을 초기화하기 위한 것일 수 있다.
부팅 매커니즘(238)은 펌웨어 내 구현되는 기본 입력/출력 시스템(BIOS: Basic Input/Output System)을 포함할 수 있다. 부팅 매커니즘(238)은 저장 유닛(114), 제어 유닛(112), 리저브된 저장 영역을 분할, 또는 그것들의 조합 내에 상주(reside)할 수 있다. 더 특정한 예로서, 부팅 매커니즘(238)은 마더 보드 상의 전기적으로 소거 가능한 피롬(EEPROM: electrically erasable and programmable read only memory) 또는 플래시 메모리 내에 상주할 수 있다. 제어 유닛(112), 저장 유닛(114), 리저브된 저장 영역을 분할, 또는 그것들의 조합은 컴퓨팅 시스템(100)을 초기화하기 위한 부팅 매커니즘(238)의 액세스 및 구현할 수 있다.
컴퓨팅 시스템(100)은 운영 체제(operating system)(240)를 더 포함한다. 운영 체제(240)는 컴퓨팅 시스템(100)의 동작을 관리하기 위한 방법 또는 프로세스를 포함할 수 있다. 운영 체제(240)는 도 1의 소프트웨어(126)를 포함할 수 있다. 운영 체제(240)는 컴퓨팅 시스템(100)을 위한 소프트웨어(126)의 일부일 수도 있다. 운영 체제(240)는 도 1에 도시된 유닛들과 같은 하드웨어, 소프트웨어(126)를 위한 것과 같은 다른 응용 소프트웨어, 및 그것들의 조합을 관리할 수 있다.
컴퓨팅 시스템(100)은 저장 유닛(114)을 위한 입상도 레벨(granularity level)(242)을 포함할 수 있다. 입상도 레벨(242)은 저장 유닛(114) 상에서 제어의 이용가능 정도를 나타낸다. 입상도 레벨(242)은 제어 유닛(112), 운영 체제(240), 부팅 매커니즘(238), 또는 그것들의 조합을 위해 이용 가능하거나 보일 수 있는 저장 유닛(114)의 구조적 컴포넌트들(204)에 접근 가능성을 나타내는 것을 포함한다. 예를 들면, 입상도 레벨(242)은 구조적 컴포넌트들(204) 내 하이어러키의 하나 이상의 레벨에 따를 수 있다.
운영 체제(240)는 메모리 관리 유닛(MMU: memory management unit)(244) 또는 그것에 액세스를 포함한다. 메모리 관리 유닛(244)은 정보를 액세스를 제어하기 위한 장치, 프로세스, 방법, 그것의 일부, 또는 그것들의 조합이다. 메모리 관리 유닛(244)은 하드웨어 장치 또는 회로, 소프트웨어 기능, 펌웨어, 또는 그것들의 조합을 포함한다. 메모리 관리 유닛(244)은 프로세싱 어드레스들에 근거하여 액세스를 관리 또는 제어할 수 있다.
예를 들면, 메모리 관리 유닛(244)은 가상 메모리 어드레스들과 물리 어드레스들 사이에 변환을 할 수 있다. 가상 메모리 어드레스는 운영 체제(240)를 위한 지시 또는 데이터의 위치를 식별한다. 가상 메모리 어드레스는 소프트웨어(126) 내 위치의 식별 또는 운영 체제(240)에 의해 사용된 식별들의 집합일 수 있다. 가상 메모리 어드레스는 프로세스를 위해 이용가능하게 만들어질 수 있다. 가상 메모리는 물리 어드레스로 매핑(mapping)되거나 묶일(tie) 수 있다.
물리 어드레스는 저장 유닛(114) 내 위치를 식별할 수 있다. 물리 어드레스는 물리 메모리 또는 메모리 장치 내의 회로 또는 일부를 나타낼 수 있다. 물리 어드레스는 저장 유닛(114)의 위치에 따라 특정하게 저장된 데이터 또는 정보로의 액세스에 사용될 수 있다. 물리 어드레스는 위치에 따른 특정 또는 그것에 저장된 데이터를 위한 채널들(206), 모듈들(208), 랭크들(210), 칩들(212), 뱅크들(214) 또는 그것들의 조합의 특정 인스턴스들을 기술하거나 나타낼 수 있다.
메모리 관리 유닛(244)은 메모리 집합들(memory sets)(246)을 포함할 수 있다. 메모리 집합들(246)은 메모리의 연속적인 그룹핑들을 각각 포함할 수 있다. 메모리 집합들(246)은 가상 메모리를 위한 저장 그룹핑들의 고정된 길이 또는 단위 길이를 각각 포함할 수 있다. 메모리 집합들(246)은 가상 메모리를 위한 가장 작은 유닛 또는 그룹핑일 수 있다. 예를 들면, 메모리 집합들(246) 각각은 페이지 테이블 내 단일 엔트리에 따른 메모리 페이지일 수 있다.
메모리 집합들(246)은 프로그램을 대신한 운영 체제에 의해 수행된 메모리 할당을 위한 데이터의 유닛들일 수 있다. 메모리 집합들(246)은 메인 메모리와 하드 디스크 또는 외부 스토리지와 같은 다른 보조 저장소 사이의 전송을 위한 것일 수 있다.
메모리 관리 유닛(244)은 병렬 프레임워크(parallel framework)(248)를 포함할 수 있다. 병렬 프레임워크(248)는 메모리 집합들(246)을 배열하고 구조화하기 위한 방법, 프로세스, 장치, 회로, 또는 그것들의 조합이다. 병렬 프레임워크(248)는 메모리 집합들(246)의 아키텍쳐, 특성, 구성, 또는 그것들의 조합으로 구현될 수 이TEk. 메모리 관리 유닛(244)은 병렬 프레임워크(248)를 갖는 메모리 집합들(246)을 배열하거나 구성할 수 있다.
메모리 관리 유닛(244)을 위한 병렬 프레임 워크(248)는 구조적 컴포넌트들(204)의 병렬 구조(216)를 반영하기 위해 메모리 집합들(246)을 배열하고 구성할 수 있다. 병렬 프레임워크(248)는 구조적 컴포넌트들(204)의 병렬 구조(216)에 따른 메모리 집합들(246)을 배열하고 구성할 수 있다. 병렬 프레임워크(248)는 구조적 컴포넌트들(204)의 병렬 구조(216)를 반영하기 위해 메모리 집합(246)들을 배열하거나 구성할 수 있다.
병렬 프레임워크(248)는 메모리 집합들(246)을 위해 리소스, 배열한 리소스들, 식별한 리소스들, 또는 그것들의 조합에 의해 메모리 집합들(246)을 배열하고 구성할 수 있다. 메모리 관리 유닛(244)은 동시에, 개별적으로, 상호 간에 독립적으로, 또는 그것들의 조합으로 액세스되고 이용될 수 있는 구조적 컴포턴트들(204)에 따른 메모리 집합들(246)의 인스턴스와 같은 메모리 집합들(246)로 분배, 배열, 식별, 또는 그것들의 조합을 할 수 있다.
병렬 프레임워크(248)는 메모리 집합들(246)을 위한 구조-반영 조직(structure-reflective organization)(250)은 메모리 집합들(246)의 각 인스턴스를 위한 구분 또는 병렬 프레임워크(248)를 위한 메모리 집합들(246)의 각 인스턴스들 사이의 관계이다. 구조-반영 조직(250)은 메모리 집합들(246) 각각을 위한 식별, 어드레스, 특정 경로, 배열, 컴포넌트들로 매핑, 또는 그것들의 조합일 수 있다.
예를 들면, 병렬 프레임워크(248)는 병렬 구조(216)를 포함하는 구조적 컴포넌트들(204)을 나타내거나 매칭하기 위한 제 1 페이지(252), 제 2 페이지(254)를 위한 생성, 구성, 배열, 또는 그것들의 조합일 수 있다. 제 1 페이지(252)와 제 2 페이지(254)는 메모리 집합들(246)의 인스턴스 또는 발생 각각일 수 있다. 병렬 프레임워크(248)는 제 1 페이지(252)와 제 2 페이지(254)를 위한 생성, 구성, 배열, 또는 그것들의 조합으로 리소스들의 할당 또는 분할, 그것으로의 액세스 구성, 그것으로의 식별 또는 접속, 또는 그것들의 조합일 수 있다.
계속해서 예를 들면, 병렬 프레임워크(248)는 제 1 페이지(252)와 제 2 페이지(254)의 생성을 위한 독립적이거나 개별적인 액세스 또는 이용을 허용하는, 메모리 집합들(246)의 인스턴스들을 위한 식별, 분할, 구성, 이용, 또는 그것들의 조합일 수 있다. 병렬 프레임워크(248)는 병렬 구조(216), 운영 체제(240)에 액세스가능한 입상도 레벨(242)의 우수한 인스턴스들, 또는 그것들의 조합을 더 식별할 수 있다.
계속해서 예를 들면, 병렬 프레임워크(248)는 병렬 구조(216), 병렬 구조(216)를 허용하는 입상도 레벨(242)의 우수한 인스턴스, 또는 그것들의 조합에 연관된 구조적 컴포넌트들(204)과 독립적이고 개별적인 접근 가능성을 갖는 메모리 집합들(246) 사이에서 관계(relationship), 부합(correspondence), 매핑(mapping), 대표(representation), 반영(reflection), 또는 그것들의 조합을 생성할 수 있다. 더 상세한 예로서, 제 1 페이지(252)는 제 1 채널 컴포넌트(218), 제 1 모듈 컴포넌트(222), 제 1 랭크 컴포넌트(226), 제 1 칩 컴포넌트(230), 제 1 뱅크 컴포넌트(234), 또는 그것들이 조합으로 묶일 수 있다. 제 2 페이지(254)는 제 2 채널 컴포넌트(220), 제 2 모듈 컴포넌트(224), 제 2 랭크 컴포넌트(228), 제 2 칩 컴포넌트(232), 제 2 뱅크 컴포넌트(236), 또는 그것들의 조합으로 유사하게 묶일 수 있다.
계속해서 예를 들면, 병렬 프레임워크(248)는 구조-반영 조직(250)의 생성, 페이지 테이블 내 엔트리들의 배열, 또는 그것들의 조합에 근거한 연결을 생성할 수 있다. 제 1 페이지(252)와 제 2 페이지(254)는 제 1 페이지(252)와 제 2 페이지(254)를 액세스하기 위한 구조-반영 조직(250)을 각각 포함할 수 있다. 제 1 페이지(252)와 제 2 페이지(254)를 위한 구조-반영 조직(250)은 유사하게, 개별적으로, 상호 간에 독립적으로, 또는 그것들의 조합으로 제 1 페이지(252)와 제 2 페이지(254)로의 액세스 또는 이용을 허용할 수 있다.
메모리 관리 유닛(244)은 집합 조건 매커니즘(set qualification mechanism)(또는 페이지 할당 매커니즘(page allocation mechanism))(256), 집합 할당 기능(set allocation function)(또는 페이지 할당 기능(page allocation function))(258), 또는 그것들의 조합을 더 포함할 수 있다. 집합 조건 매커니즘(256)은 조건을 만족하는 메모리 집합들(246)의 결정을 위한 방법, 프로세스, 장치, 회로, 또는 그것들의 조합이다.
예를 들면, 집합 조건 매커니즘(256)은 액세스 또는 프로세싱을 위해 이용 가능한, 에러 또는 실패를 야기하는, 임계값 아래 또는 위로 진행하는, 또는 그것들의 조합인 메모리 집합(246)을 결정할 수 있다. 더 상세한 예로서, 집합 조건 매커니즘(256)은 메모리 집합들(246)을 위한 접근 가능성 또는 준비의 식별을 위한 것일 수 있다. 집합 조건 매커니즘(256)은 액세스 또는 프로세싱을 위해 이용가능한 메모리 집합들(246)의 자유 또는 비사용된 인스턴스들을 식별할 수 있다.
계속해서 예를 들면, 집합 조건 매커니즘(256)은 장치(102)를 위한 실행 시간(run-time), 동작, 실행, 또는 그것들의 조합 동안 메모리 집합들(246)의 이용 가능성을 식별할 수 있다. 집합 조건 매커니즘(256)은 가중된 라운드 로빈(round robin) 정책, 최근 사용(LRU: least recently used) 정책, 가장 빈번하게 또는 종종 사용된(most frequently or often used) 정책, 또는 그것들의 조합과 같은 다양한 구현들을 포함할 수 있다.
집합 할당 기능(258)은 액세스를 위한 메모리 집합들(246)의 하나 이상의 인스턴스들의 선택을 위한 방법, 프로세스, 장치, 회로, 또는 그것들의 조합이다. 집합 할당 기능(258)은 집합 조건 매커니즘(256)의 결과로부터 메모리 집합들(246)의 하나 이상의 인스턴스들을 선택할 수 있다. 예를 들면, 집합 할당 기능(258)은 방정식(equation), 기법, 또는 그것들의 조합을 포함할 수 있다. 더 상세한 예로서, 집합 할당 기능(258)은 패턴의 식별에 근거한 최소 기능 또는 루틴을 포함할 수 있다.
컴퓨팅 시스템(100)은 다양한 방법들 내 상술한 바와 같은 다양한 매커니즘들로 구현될 수 있다. 예를 들면, 컴퓨팅 시스템(100)은 하드웨어, 소프트웨어, 펌웨어 또는 그것들의 조합을 사용하여 부팅 매커니즘(238), 집합 조건 매커니즘(256), 또는 그것들의 조합으로 구현될 수 있다. 더 상세한 예로서, 다양한 매커니즘들이 회로들, 능동 또는 수동, 게이트들, 배열들, 피드백 루프들, 피드포워드 루프들, 하드웨어 연결들, 기능들 또는 기능 콜(function call)들, 지시들, 방정식들, 데이터 조작들, 구조들, 어드레스들, 또는 그것들의 조합을 사용하여 구현될 수 있다.
구조적 컴포넌트들(204)의 효율적인 사용을 제공하는 구조적 컴포넌트(204)의 병렬 구조(216)를 반영하고 나타내는 메모리 집합들(246)을 구성하거나 배열하는 병렬 프레임워크(248)가 나타나있다. 메모리 집합들(246)은 구조적 컴포넌트들(204)을 교차한 응용 메모리의 균등한 분배를 위해 사용될 수 있는 구조적 컴포넌트들(204)의 병렬 구조(216)를 반영하고 나타낸다.
도 3은 본 발명에 따른 컴퓨팅 시스템의 예시적인 순서도이다.
도 3을 참조하면, 컴퓨팅 시스템(100)은 프레임워크 블록(framework block)(302), 조정 블록(adjustment block)(304), 및 밸런싱 블록(balancing block)(306), 또는 그것들의 조합을 포함할 수 있다.
프레임 워크 블록(302)은 조정 블록(304)에 연결될 수 있다. 조정 블록(304)은 밸런싱 블록(306)에 추가로 연결될 수 있다.
블록들, 버퍼들, 유닛들, 또는 그것들의 조합은 다양한 방법들로 상호 간에 연결될 수 있다. 예를 들면, 블록들은 유선 또는 무선 접속들, 지시 단계들, 프로세스 시퀀스, 또는 그것들의 조합의 사용에 의한 것과 같이 다른 것의 출력에 연결된 하나의 블록의 입력을 갖는 것에 의해 연결될 수 있다. 또 예를 들면, 블록들, 버퍼들, 유닛들, 또는 그것들의 조합은 직접적으로 연결된 블록들, 버퍼들, 유닛들, 또는 그것들의 조합 사이에 접속 수단들의 다른 구조를 사이에 두지 않고 직접적으로 연결되거나 간접적으로 연결된 블록들, 버퍼들, 유닛들, 또는 그것들의 조합 사이에 접속 수단들과 다른 블록들, 버퍼들, 유닛들, 또는 그것들의 조합으로 간접적으로 연결될 수 있다.
더 상세한 예로서, 프레임워크 블록(302)의 하나 이상의 입력들 또는 출력들은 컨덕터들 또는 직접적인 커플링을 위한 그것들 사이의 동작 연결들을 사용한 조정 블록(304)의 하나 이상의 입력들과 출력들에 연결될 수 있다. 또 예를 들면, 프레임워크 블록(302)은 다른 유닛들, 블록들, 버퍼들, 장치들 또는 그것들의 조합을 통해 간접적으로 조정 블록(304)에 연결될 수 있다. 컴퓨팅 시스템(100)을 위한 블록들, 버퍼들, 유닛들, 또는 그것들의 조합은 상술한 바와 같이 유사한 방법으로 연결될 수 있다.
프레임워크 블록(302)은 도 2의 메모리 집합들(246)을 관리하기 위해 구성된다. 프레임워크 블록(302)은 메모리 셋들(216)을 위한 리소스의 생성, 리소스의 구성, 리소스의 배열, 또는 그것들의 조합에 의해 관리할 수 있다. 프레임워크 블록(302)은 식별 블록(identification block)(308), 배열 블록(arrangement block)(310), 또는 그것들의 조합을 포함할 수 있다.
식별 블록(308)은 하드웨어 리소스들을 위한 구성, 이용가능성, 또는 그것들의 조합을 위해 구성된다. 식별 블록(308)은 도 3의 구조적 컴포넌트(204), 도 2의 병렬 구조(216), 도 2의 입상도 레벨(242), 또는 그것들의 조합을 식별할 수 있다. 식별 블록(308)은 도 1의 저장 유닛(114) 내 구조적 컴포넌트들(204)의 병렬 구조(216)를 나타내기 위한 구조적 프로파일(structural profile)(312)을 결정할 수 있다.
구조적 프로파일(312)은 구조적 컴포넌트들(204)과 그것의 구성을 나타낸다. 구조적 프로파일(312)은 구조적 컴포넌트들(204)의 기술(description), 구조적 컴포넌트들(204) 사이의 배열 또는 관계, 또는 그것들의 조합을 포함할 수 있다. 구조적 프로파일(312)은 컴포넌트들의 배열들 또는 관계들을 기술하거나 나타내는 것을 통해 구조적 컴포넌트들(204)을 위한 병렬 구조(216)를 기술하거나 나타낼 수 있다.
식별 블록(308)은 식별 블록(308)으로 액세스 가능한 입상도 레벨(242)에 근거하여 구조적 프로파일(312)를 결정할 수 있다. 식별 블록(308)은 도 2의 부팅 매커니즘(238)을 갖는 상호 작용을 할 수 있다. 식별 블록(308)은 부팅 매커니즘(238)을 통해 저장 유닛(114)의 구조적 컴포넌트들(204)을 위한 가시성이거나 액세스를 위한 입상도 레벨(242)을 결정할 수 있다.
예를 들면, 기본 입/출력 시스템(BIOS)은 도 2의 채널들, 도 2의 모듈들(208), 도 2의 랭크들(210), 도 2의 칩들(212), 도 2의 뱅크들(214) 또는 그것들의 조합의 개별적인 인스턴스들을 인식, 제어 또는 액세스하기 위한 방법 또는 프로세스를 포함할 수 있다. 도 2의 운영 체제(240)는 식별 블록(308)에 의해 결정, 부팅 매커니즘(238)에 의해 지정, 또는 그것들의 조합에 의해 결정된 입상도 레벨(242)에서 구조적 컴포넌트들(204)을 효율적으로 액세스하고 제어할 수 있다.
또 예를 들면, 식별 블록(308)은 장치의 분류 또는 구조적 컴포넌트들(204) 또는 저장 유닛(114)을 위한 부분 번호, 장치들 또는 컴포넌트들을 위한 이용 가능 드라이버들, 또는 그것들의 조합과 같은 식별들에 근거하여 입상도 레벨(242)을 결정할 수 있다. 식별 블록(308)은 구조적 컴포넌트들(204) 또는 저장 유닛(114), 장치들 또는 컴포넌트들을 위한 이용가능 드라이버들, 또는 그것들의 조합의 특정 인스턴스들을 위한 입상도 레벨(242)에 관련된 컴퓨팅 시스템(100)에 의해 결정된 매핑들, 기술들, 값들, 또는 그것들의 조합을 포함할 수 있다.
식별 블록(308)은 구조적 컴포넌트들(204) 또는 저장 유닛(114), 장치들 또는 컴포넌트들을 위한 이용가능 드라이버들, 또는 그것들의 조합의 식별에 근거하여 구조적 프로파일(312)을 더 결정할 수 있다. 식별 블록(308)은 도 1의 제어 인터페이스(112), 도 1의 저장 인터페이스(124), 또는 그것들의 조합을 사용하여 저장 유닛(114) 또는 구조적 컴포넌트들(204)과 통신할 수 있다. 식별 블록(308)은 부팅 매커니즘(238)의 실행 동안 식별 또는 부팅 매커니즘을 통한 식별(identification)을 확인(identify)할 수 있다.
식별 블록(308)은 그 안의 저장 유닛(114) 또는 구조적 컴포넌트들(204)과 통신에 근거하여 구조적 프로파일(312)을 결정할 수 있다. 예를 들면, 식별 블록(308)은 쿼리에 응답하는 개별적인 컴포넌트들의 식별에 근거하여 구조적 프로파일(312)을 결정할 수 있다.
또 예를 들면, 식별 블록(308)은 저장 유닛(114)에 의해 제공된 식별 정보 또는 디스크립션(description)들에 근거하여 구조적 프로파일(312)을 결정할 수 있다. 식별 블록(308)은 가능한 장치 디스크립션들 또는 식별들의 리스트를 갖는 구조적 프로파일(312)을 위한 다양하게 가능한 인스턴스들 또는 값들에 관련된 컴퓨팅 시스템(100)에 의해 미리 결정된 디스크립션들 또는 대표들을 더 포함할 수 있다.
식별 블록(308)은 액티브 상태(active state)(314) 동안 메모리 집합들(246)을 추가로 액세스하고 식별할 수 있다. 액티브 상태(314)는 운영 체제(240) 또는 도 1의 장치(102)의 실시간 실행을 나타낼 수 있다. 액티브 상태(314)는 부팅 매커니즘(238)을 사용하여 장치(102)의 초기화 다음일 수 있다.
식별 블록(308)은 액티브 상태(314) 동안 병렬 구조(216)를 반영하는 메모리 집합들(246)을 나타내기 위한 비선형 액세스 매커니즘(non-linear access mechanism)(318)에 따른 적합한 이용가능 집합(qualified available set)들(316)을 생성할 수 있다. 적합한 이용가능 집합들(316)은 액티브 상태(314) 내 사용 또는 액세스를 위해 이용가능 메모리 집합들(246)의 인스턴스들이다. 적합한 이용가능 집합들(316)은 읽기, 쓰기, 프리, 또는 제거, 이동, 또는 그러한 동작들의 조합을 위해 이용 가능한 어드레스들, 물리 메모리 위치, 메모리 페이지, 또는 그것들의 조합을 포함할 수 있다.
식별 블록(308)은 도 2의 집합 자격 매커니즘(set qualification mechanism)(256)에 근거하여 적합한 이용가능 집합들(316)을 생성할 수 있다. 예를 들면, 식별 블록(308)은 집합 자격 매커니즘(256)을 위해 지정된 바와 같은 가중된 라운드 로빈(round robin) 정책, 최근 사용(LRU: least recently used) 정책, 가장 빈번하게 또는 종종 사용된(most frequently or often used) 정책, 또는 그것들의 조합에 근거하여 적합한 이용가능 집합들(316)을 생성한다.
식별 블록(308)은 비선형 액세스 매커니즘(318)에 따라 적합한 이용 가능 집합들(316)을 생성할 수 있다. 비선형 액세스 매커니즘(318)은 구조적 컴포넌트들(204)의 병렬 구조(216)를 반영하는 적합한 이용가능 집합들(316)의 구조 또는 조직이다. 비선형 액세스 매커니즘(318)은 메모리 집합들(246)의 자격 인스턴스(qualifying instance)들 각각을 위해 분리된 리스팅 또는 이용가능성을 포함할 수 있다. 비선형 액세스 매커니즘(318)은 동시 또는 비연속적 독립 액세스를 위한 메모리 집합들(246)의 자격 인스턴스들 각각의 목록(list) 또는 이용가능일 수 있다.
예를 들면, DRAM 뱅크에 의해 조직된 메모리 집합들(246)을 포함하는 각 페이지 리스트는 비선형 액세스 매커니즘(318)을 위한 식별 블록(308)에 의해 점유된 리스트를 나타내는 가중치에 연관될 수 있다. 액티브 상태(314) 동안 각 페이지 요청은 가장 낮은 값을 갖는 리스트로부터의 선택된 페이지들 내 결과 또는 적합한 이용가능 집합들(316)을 위한 가중치의 양일 수 있다. 식별 블록(308)은 컴퓨팅 시스템(100), 사용자, 어플리케이션, 또는 그것들의 조합에 의해 정의된 선택적인 제약들을 갖는 로컬 DRAM 페이지들을 우선 이용할 수 있다. 식별 블록(308)은 최대 이용가능 DRAM 뱅크-레벨 유사성에 기초로 프리 페이지 리스트의 조직화에 근거하여 적합한 이용 가능 집합들(316)을 생성할 수 있다.
병렬 구조(216)에 근거한 비선형 액세스 매커니즘(318)을 포함하는 적합한 이용가능 집합(316)은 컴퓨팅 시스템(100)을 위한 증가된 속도와 효율을 제공한다. 병렬 구조(216)에 근거한 적합한 이용가능 집합(316)은 전형적인 선형 리스팅을 대신하여 이용가능 또는 프리 페이지들의 리스팅 내 구조적 컴포넌트들(204)의 병렬 구조(216)를 반영할 수 있다. 적합한 이용가능 집합들(316)은 병렬 컴포넌트들 각각의 프리 또는 이용가능 페이지들의 다중 리스팅을 제공할 수 있고, 병렬 구조(216)를 교차하는 페이지들로 나뉠 수 있다. 비선형 교차 매커니즘(318)은 최대 이용가능 동일성의 이용을 위해 컴퓨팅 시스템(100)을 활성화할 수 있고, 효율과 액세스 속도의 증가를 위해 모든 뱅크들을 교차하는 프리페이지의 이용까지 할 수 있다.
배열 블록(310)은 메모리 집합들(246)을 생성, 유지, 또는 조정을 위해 구성될 수 있다. 배열 블록(310)은 병렬 구조(216)의 미러링을 위해 메모리 집합들(246)을 구현할 수 있다. 배열 블록(310)은 병렬 구조(216)를 나타내기 위한 구조적 프로파일(312)에 근거하여 메모리 집합들(246)을 생성할 수 있다.
배열 블록(310)은 병렬 구조(216)를 미러링하는 도 2의 구조-반영 조직(250)을 갖는 메모리 집합들(246)을 생성할 수 있다. 배열 블록(310)은 병렬 구조(216)를 미러링하는 메모리 어드레스 맵들에 따른 메모리 집합들(246)을 생성할 수 있다. 배열 블록(310)은 부팅 매커니즘을 사용하거나 통한 시스템 부트 시간에서 구조적 프로파일(312)에 근거하여 메모리 집합들(246)을 생성할 수 있다.
예를 들면, 배열 블록(310)은 구조-반영 조직(250)을 갖는 도 2의 제 1 페이지(252)와 도 2의 제 2 페이지(254)를 포함하는 메모리 집합들(246)을 생성할 수 있다. 배열 블록(310)은 도 2의 제 1 채널 컴포넌트(218), 도 2의 제 1 모듈 컴포넌트(222), 도 2의 제 1 랭크 컴포넌트(226), 도 2의 제 1 칩 컴포넌트(230), 도 2의 제 1 뱅크 컴포넌트(234), 또는 그것들의 조합에 해당하거나 매칭하는 제 1 페이지(252)를 생성한다. 배열 블록(310)은 도 2의 도 2의 제 2 채널 컴포넌트(220), 도 2의 제 2 모듈 컴포넌트(224), 도 2의 제 2 랭크 컴포넌트(228), 도 2의 제 2 칩 컴포넌트(232), 도 2의 제 2 뱅크 컴포넌트(236), 또는 그것들의 조합에 해당하거나 매칭하는 제 2 페이지(254)를 추가로 생성할 수 있다.
배열 블록(310)은 다양한 방법들로 구조-반영 조직(250)에 따른 메모리 집합들(246)을 생성할 수 있다. 예를 들면, 배열 블록(310)은 구조적 컴포넌트들의 해당 인스턴스, 그것의 하이어러키, 그것의 병렬 구조(216), 또는 그것들의 조합에 매칭하는 크기 또는 접근 가능성을 포함하는 메모리 집합들(246)을 생성할 수 있다.
또 예를 들면, 배열 블록(310)은 입상도 레벨(242)의 최저 인스턴스에 따른 메모리 집합들(246)을 생성할 수 있다. 더 상세한 예로서, 배열 블록(310)은 가시성을 나타내는 입상도 레벨을 위해 제 1 뱅크 컴포넌트(234)와 제 2 뱅크 컴포넌트(236) 각각에 매칭하는 제 1 페이지(252)와 제 2 페이지(254)를 생성하거나 뱅크들(214)로 하향 제어를 할 수 있다.
배열 블록(310)은 구조적 컴포넌트들(204)에 연관된 그룹핑, 하이어러키, 시퀀스, 상대적인 위치 또는 관계, 또는 그것들의 조합에 매칭하는 메모리 집합들(246)을 생성할 수 있다. 계속해서 예를 들면, 제 1 페이지(252)와 제 2 페이지(254)는 도 2에 도시된 바와 같은 'chip 0-bank 0'을 위한 ‘C0-B0’ 또는 ‘chip 0-bank 1’을 위한 ‘C0-B1’과 같은 컴포넌트들에 따라 연관된 하이어러키에 따른 식별들이 할당될 수 있다.
다른 예로서, 제 1 페이지(252)와 제 2 페이지(254)는 그들이 칩들(212)의 동일 인스턴스를 위해 뱅크들(214)의 인접하게 어드레스된 인스턴스들에 따를 때, 상호 간에 직접 인접될 수 있다. 또 다른 예로서, 제 1 페이지(252)와 제 2 페이지(254)는 그들이 동일 칩을 위한 뱅크들(214)의 인접하지 않게 어드레스된 인스턴스들 또는 다른 칩들의 뱅크들(214)에 따를 때, 다르거나 상대적으로 더 떨어져서 위치할 수 있다.
배열 블록(310)은 추가적으로 운영 체제(240)의 액티브 상태(314) 동안 메모리 집합들(246)을 동적으로 조절할 수 있다. 배열 블록(310)은 액티브 상태(314) 동안 액세스 또는 사용을 위한 메모리 집합들(246)의 하나 이상의 인스턴스들의 선택에 근거하여 조절할 수 있다. 배열 블록(310)은 읽기, 쓰기, 프리 또는 제거, 이동, 또는 그러한 동작들의 조합을 통해 메모리 집합들(246) 또는 그 안의 컨텐츠로 조정들의 업데이트 또는 허용에 의해 메모리 집합들(246)을 조정할 수 있다.
배열 블록(310)은 읽기, 쓰기, 프리 또는 제거, 이동, 또는 그러한 동작들의 조합을 위한 적합한 이용가능 집합들(316) 내로부터 메모리 집합(246)의 하나 이상의 인스턴스들을 결정할 수 있다. 배열 블록(310)은 도 2의 집합 할당 기능(258)을 사용한 메모리 집합들(246)의 하나 이상의 인스턴스들을 결정할 수 있다. 동작 시스템(240)은 메모리 집합들(246)의 액티브 상태(314) 동안 배열 블록(310)에 의해 동적으로 결정된 하나 이상의 인스턴스들을 사용하여 읽기, 쓰기, 프리 또는 제거, 이동, 또는 그러한 동작들의 조합을 수행할 수 있다.
구조적 컴포넌트들(204)의 병렬 구조(216)를 미러링하고 나타내는 메모리 집합들(246)은 구조적 컴포넌트들(204)의 효율적인 사용을 제공하는 것이 발견된다. 구조적 컴포넌트들(204)의 병렬 구조(216)를 미러링하고 나타내는 메모리 집합들(246)은 구조적 컴포넌트(204)을 교차하는 응용 메모리의 분배에도 사용될 수 있다.
프레임워크 블록(302)은 상술한 바와 같이, 메모리 집합들(246)을 관리하기 위한 도 2의 병렬 프레임워크(248), 도 2의 메모리 관리 유닛(244), 부팅 매커니즘(238), 또는 그것들의 조합에 사용할 수 있다. 프레임워크 블록(302)은 제어 유닛(112), 제어 인터페이스(122), 저장 유닛(114), 저장 인터페이스(124), 또는 그것들의 조합을 추가로 사용될 수 있다. 프레임워크 블록(302)은 제어 유닛(112), 저장 유닛(114), 또는 그것들의 조합 내 병렬 구조(216), 구조적 프로파일(312), 적합한 이용가능 집합들(316), 또는 그것들의 조합을 반영하는 메모리 집합들(246)과 같은 프로세싱 결과를 저장할 수 있다.
메모리 집합들(246)을 관리한 이후, 제어 흐름은 조정 블록(304)로 진행(pass)할 수 있다. 제어 흐름은 다양한 방법들을 통해 진행할 수 있다. 예를 들면, 제어 흐름은 프레임워크 블록(302)으로부터 조정 블록(304)으로 프로세싱 결과의 진행에 의한 것과 같이 다른 블록으로 진행된 하나의 블록의 프로세싱 결과를 갖는 것에 의해 진행할 수 있다.
또 예를 들면, 제어 흐름은 알려진 저장 위치에서 메모리 집합들(246) 또는 페이지 리스트의 저장과 조정 블록(304)으로의 액세스 가능에 의한 것과 같은 알려진 위치에서 프로세싱 결과들의 저장에 의해 진행할 수 있고, 다른 블록으로 액세스 가능할 수 있다. 또 예를 들면, 제어 흐름은 플래그, 인터럽트, 상태 신호, 또는 그것들의 조합의 사용에 의한 것과 같이 알려진 다른 블록에 의해 진행될 수 있다.
조정 블록(304)은 메모리 집합들(246) 또는 그 안의 컨텐츠를 교정하기 위해 구성된다. 조정 블록(304)은 운영 체제(240)의 액티브 상태(314) 내 또는 액티브 상태(314) 동안 메모리 집합들(246)을 위해 교정할 수 있다. 조정 블록(304)은 메모리 집합들(246) 또는 그 안의 컨텐츠를 교정하기 위한 상태 블록(state block)(320), 소스 블록(source block)(322), 리맵핑 블록(remapping block)(324), 또는 그것들의 조합을 포함할 수 있다.
상태 블록(320)은 메모리 집합들(246)에 연관된 변칙들(anomalies)의 검출을 위해 구성될 수 있다. 상태 블록(320)은 동일한 DRAM 리소스들을 위해 권고되는 사용 특정한 페이지들 어플리케이션들의 사용을 식별하기 위한 동적 응용 프로파일링 매커니즘을 구현할 수 있다.
상태 블록(320)은 DRAM 리스스 컨텐션(contention)의 검출을 위한 최소의 오버헤드를 모니터링하는 연속 시스템을 제공할 수 있다. 상태 블록(320)은 어플리케이션과 DRAM 리소스 이용들을 이해하기 위한 다양한 입상도들에서 프로파일 활동(profile activity)을 위해 병렬 프레임워크(248)에 사용할 수 있다. 다양한 입상도들에서 프로파일 활동을 위해, 상태 블록(320)은 제어 유닛(112)에 의해 식별되는, 프로세서 벤더들에 의해 제공되는, 컴퓨팅 시스템(100)에 의해 미리 결정되는, 또는 그것들의 조합에 의한 샘플 하드웨어 성능 카운터들일 수 있다.
상태 블록(320)은 불규칙 상태(326)의 검출에 근거하여 변칙들을 검출할 수 있다. 상태 블록(320)은 액티브 상태(314) 동안 불규칙 상태(326)를 검출할 수 있다.
불규칙 상태(326)는 액세싱하는 하나 이상의 메모리 집합들(246)에 연관된 프로세싱 결과 또는 조건이다. 불규칙 상태(326)는 에러(error), 실패(failure), 타임아웃(timeout), 프로세싱 간격(processing result), 액세스 대립(access conflict), 또는 그것들의 조합과 같은 프로세싱 결과 또는 조건을 포함할 수 있다. 상태 블록(320)은 상술한 프레임워크 모듈(208)에 의해 생성되고 관리되는 병렬 구조(216)를 반영하는 메모리 집합들(246)을 위한 불규칙 상태(326)를 식별할 수 있다.
상태 블록(320)은 리소스 대립(resource conflict)들과 캐시 미스(cache miss)들과 같은, 불규칙 상태(irregular status)(326)를 위한 연속 시스템 모니터링을 제공한다. 상태 블록(320)은 다양한 카테고리들을 위한 메모리 집합들(246)에 연관된 활동의 프로파일링에 근거하여 추가로 모니터할 수 있다.
예를 들면, 상태 블록(320)은 메모리 집합들(246)에 연관된 활동을 기술하는 액세스 프로파일(access profile)(325)을 생성할 수 있다. 더 상세한 예로서, 상태 블록(320)은 구조적 컴포넌트들(204)의 이용을 위한 액세스 프로파일(325)을 생성할 수 있다. 카테고리화는 채널 이용, 랭크 이용, 뱅크 이용, 또는 그것들의 조합을 포함할 수 있다.
상태 블록(320)은 페이지의 미스율(miss rates)을 유지하기 위해, 페이지 대립(page conflict)에 기인한 바와 같은, 뱅크마다 이슈된 프리차지들의 기록에 의해 액세스 프로파일(325)을 추가로 업데이트 할 수 있다. 프리차지들은 페이지 대립 때문에 이슈될 수 있다. 상태 블록(320)은 페이지 미스율을 유지하기 위해 액티브 상태(314) 동안 액세스 프로파일(325)을 업데이트할 수 있다.
상태 블록(320)은 액세스 프로파일(325)에 근거하여 불규칙 상태(326)을 결정할 수 있다. 상태 블록(320)은 프리차지들, 미스들, 또는 대립들의 수 또는 양에 근거하여 불규칙 상태(326)를 결정할 수 있다. 상태 블록(320)은 컴퓨팅 시스템(100)에 의해 미리 결정된 임계값 또는 컴퓨팅 시스템(100)에 의해 지정된 적응적 자기-학습 임계값(adaptive self-learning threshold)에 대응한 액세스 프로파일(325) 내 기록들의 비교에 근거하여 불규칙 상태(326)를 결정할 수 있다. 상태 블록(320)은 마지막 레벨 캐시 미스 레이트들의 모니터링에 의해 하이 메모리 트래픽을 갖는 어플리케이션들의 식별에 근거하여 불규칙 상태(326)를 결정할 수 있다.
상태 블록(320)은 개별적으로 또는 이동하는 윈도우 상의 데이터를 수집하고 프로세스할 수 있다. 리스소 컨텐션을 검출하는 단계로, 상태 블록(320)은 구조적 컴포넌트들(204)을 위한 코어, 어플리케이션, 리소스, 또는 그것들의 조합의 식별을 위한 병렬 프레임워크(248)를 사용할 수 있다.
상태 블록(320)은 불규칙 상태(326)의 결정하는 단계에서 액세스 프로파일(325)을 위한 레코드들을 추가로 프로세스할 수 있다. 예를 들면, 상태 블록(320)은 활용(utilization)에 따른 가중치들 또는 팩터들, 활용 또는 대립에 연관된 주파수 또는 간격(duration), 대립의 양에서 활용 또는 실행에 연관된 프로세스들 또는 쓰레드들을 갖는 문맥 값(contextual value) 또는 우선순위, 또는 그것들의 조합을 적용할 수 있다. 상태 블록(320)은 액세스 프로파일(325)의 프로세싱과 불규칙 상태(326)를 결정하기 위한 컴퓨팅 시스템(100)에 의해 미리 결정된 인스트럭션(instruction)들, 방정식들, 방법들, 또는 그것들의 조합을 포함할 수 있다.
액세스 프로파일(325)은 컴퓨팅 시스템(100)을 위해 더 낮은 에러율과 감소된 레이턴시를 제공하는 것을 확인할 수 있다. 액세스 프로파일(325)은 활용을 카테고리화하고 레코딩하고, 리소스 대립들로 야기되어 결정되기 위해 유용한 정보를 제공할 수 있는 페이지 대립들을 나타내는 프리차지들을 더 레코딩할 수 있다. 예를 들면, 액세스 프로파일(325)은 대부분의 DRAM 리소스를 위한 어플리케이션 또는 스레드 책임을 결정하기 위해 사용될 수 있다. 더욱이, 상태 블록(320)에 의해 구현된 액세스 프로파일(325)은 사용 및 대립 데이터의 수집을 위해 적은 침입(less intrusive)과 라이터-웨이트 매커니즘(lighter-weight mechanism)을 제공할 수 있다.
소스 블록(322)은 리소스 대립들을 위한 소스 또는 원인을 결정하기 위해 구성될 수 있다. 소스 블록(322)은 리소스 대립들을 야기하거나 리소스 대립들을 위한 원인이 되는 페이지, 주소, 또는 그것들의 조합을 식별할 수 있다. 소스 블록(322)은 불규칙 상태(326)의 결정에 근거하거나 응답한 소스 또는 원인을 결정할 수 있다. 소스 블록(322)은 리소스 컨텐션을 야기하는 운영체제(OS) 페이지들을 식별할 수 있다.
소스 블록(322)은 리소스 컨텐션을 야기하는 제 1 페이지(252) 또는 제 2 페이지(254)와 같은 운영 체제(240)의 하나 이상의 페이지를 식별할 수 있다. 소스 블록(322)은 어드레스들의 로드 또는 저장을 인터셉트를 위해 특정 인스트럭션들을 갖는 어플리케이션을 위해 동적으로 주입(injecting)하고, 인스트루먼팅(instrumenting), 또는 그것들의 조합을 포함한다. 소스 블록(322)은 가상 머신들을 이용하지 않는 이유를 식별할 수 있다.
소스 블록(322)은 어드레스 추적 매커니즘(address tracing mechanism)(327)에 근거한 이유를 식별할 수 있다. 주소 추적 매커니즘(327)은 운영 체제(240)를 위한 물리 어드레스들을 식별하기 위한 방법, 프로세스, 장치, 회로, 또는 그것들의 조합이다. 예를 들면, 운영 체제(240)는 DRAM/ 메모리 제어기 클러스터에서 물리 어드레스들 내 인사이트(insight)를 획득하기 위해 주소 추적 매커니즘(327)을 사용할 수 있다. 운영 체제(240)는 그렇지 않으면, 임의의 가시성이 없거나 물리 어드레스들로의 액세스로 액세스할 수 있다.
주소 추적 매커니즘(327)은 특정 인스트럭션들을 갖는 어플리케이션들을 위해 동적 주입, 인스트루먼팅, 또는 그것들의 조합에 근거하여 인사이트를 획득할 수 있다. 특정 인스트럭션들은 기능들의 로드 또는 저장에 관련된 물리 어드레스들을 인터셉트하기 위해 운영 체제(240)를 허용할 수 있다.
어드레스 추적 매커니즘(327)은 트랩 기능(trap function)(329), 또는 그것의 사용을 포함할 수 있다. 트랩 기능(329)은 액티브 상태(314) 동안 액세스되는 물리 어드레스들의 인터셉팅, 식별, 결정, 또는 그것들의 조합을 위한 하나 이상의 유일한 인스트럭들이다.
트랩 기능(329)은 운영 체제(240), 프로그램 또는 어플리케이션, 또는 그것들의 조합에 연관된 인스트럭션 스트림을 통해 추적할 수 있다. 트랩 기능(329)은 인스트럭션 스트림 내 인스트럭션 로드, 인스트럭션 저장, 또는 그것들의 조합에 연관된 어드레스들을 식별할 수 있다.
트랩 기능(329)은 로드 인스트럭션의 저장, 인스트럭션 저장, 그것으로 연관된 물리 어드레스들, 또는 그것들의 조합을 추가로 할 수 있다. 트랩 기능(329)은, 예로서, 사용하는 일시적인 추적 파일을 저장할 수 있다. 루프들 상에 트랩 기능(329)은 어레이들의 첫 번째와 마지막 반복을 저장하고, 최소의 가상 주소 추적을 위한 오버헤드를 유지할 수 있다.
주소 추적 매커니즘(327)은 주입 구간(injection interval)(331)을 더 포함할 수 있다. 주입 구간(331)은 인스트럭션 스트림 내 트랩 기능(329)의 주입을 위한 레귤러 구간을 위한 대표 또는 메트릭이다. 주입 구간(331)은 시간의 지속, 복수의 클럭 사이클들, 인스트럭션들의 양, 특정 인스트럭션 또는 프로세스, 또는 그것들의 조합일 수 있다. 소스 블록(322)은 주입 구간(331)에 따른 레귤러 구간들에서 트랩 기능(329)의 하나 이상의 인스턴스들을 갖는 인스트럭션 스트림을 주입하기 위한 어드레스 추적 매커니즘(327)을 사용할 수 있다.
소스 블록(322)은 대립 소스(conflict source)(328)들을 식별하기 위해 어드레스 추적 매커니즘(327)을 사용할 수 있다. 대립 소스(328)는 리소스 대립을 야기하는 메모리 집합들(246) 내 부분일 수 있다. 대립 소스(328)는 불규칙 상태(326)를 야기하거나 불규칙 상태(326)에 연관된 운영 체제(240)를 위한 페이지, 물리 어드레스, 구조적 컴포넌트들(204)의 특정 인스턴스, 또는 그것들의 조합을 포함한다.
소스 블록(322)은 액티브 상태(314) 동안 불규칙 상태(326)에 연관된 하나 이상의 메모리 집합들(246) 내 대립 소스(328)를 식별할 수 있다. 소스 블록(322)은 일시적인 추적 파일 내에서와 같은, 트랩 기능(329)의 출력에 근거하여 대립 소스(328)를 식별할 수 있다. 소스 블록(322)은 트랩 기능(329)으로부터 페이지, 물리 어드레스, 구조적 컴포넌트들(204)의 특정 인스턴스, 또는 그것들의 조합에 근거한 대립 소스(328)를 식별할 수 있다.
소스 블록(322)은 프리차지들, 리소스 대립들 또는 에러들의 기록 또는 증거, 또는 그것들의 조합과 같은 액세스 프로파일(325)에 근거하여 대립 소스(328)를 추가로 식별할 수 있다. 예를 들면, 리맵핑 블록(324)은 가상 어드레스들로부터 운영 체제(240)를 위한 페이지들을 획득할 수 있다. 더 상세한 예로서, 소스 블록(322)은 프리차지들, 리소스 대립들 또는 에러들의 기록 또는 증거, 또는 그것들의 조합에 따른 페이지, 물리 어드레스, 구조적 컴포넌트들(204)의 특정 인스턴스, 또는 그것들의 조합을 식별할 수 있다.
소스 블록(322)은 물리적 페이지들에 따른 트랩 기능(329)에 의해 캡쳐된 가상 어드레스들의 식별에 근거하여 대립 소스(328)를 추가로 식별할 수 있다. 소스 블록(322)은 운영 체제(240)에 의해 제공된 하나 이상의 API들에 근거하여 물리적 페이지들에 연관된 가상 어드레스들을 식별할 수 있다. 소스 블록(322)은 계측 오버헤드의 감소를 위해 높은 마지막 레벨 캐시 미스들을 갖는 특정 코어들을 위해 상술한 바와 같은 프로파일일 수 있다.
소스 블록(322)의 페이지 식별 위상은 상태 블록(320)의 대립 식별 위상보다 더 많은 리소스 집중일 수 있으므로, 컴퓨팅 시스템(100)은 소스 블록(322)의 페이지 식별 위상 동안 상태 블록(320)을 갖는 대립들의 모니터를 위해 연속된다. 대립의 회수가 상태 블록(320)의 대립 식별 위상 동안 일부 미리 정해진 임계값 미만이면, 컴퓨팅 시스템(100)은 상태 블록(320)의 디폴트된 대립 식별 위상으로 전환될 수 있다.
리매핑 블록(324)은 리소스 대립의 제거 또는 최소화를 위해 구성될 수 있다. 리매핑 블록(324)은 리소스 대립의 제거 또는 최소화를 위해 대립 리소스(328)를 프로세스할 수 있다. 리매핑 블록(324)은 페이지, 어드레스, 컴포넌트, 또는 그것들의 조합을 위해 정정, 리매핑, 조정, 또는 그것들의 조합에 의해 대립 리소스(328)를 프로세스할 수 있다. 리매핑 블록(324)은 물리 페이지 이동 비용의 제거와 그것의 성능 효과인 어림법(heuristics)을 제공하거나 이용할 수 있다.
리매핑 블록(324)은 조정된 집합들(adjusted sets)(330)의 생성에 의한 대립 소스(328)를 프로세싱할 수 있다. 조정된 집합들(330)은 메모리 집합들(246)의 조정되고 교정된 인스턴스들이다. 조정된 집합(330)은 대립 소스(328)를 위한 조정 또는 교정을 포함할 수 있다.
리매핑 블록(324)은 프로세싱한 대립 소스(328)에 연관된 프로세싱 이득의 계산에 근거하여 조정된 집합들(330)을 생성할 수 있다. 리매핑 블록(324)은 프로세싱한 대립 소스(328)에 연관된 프로세싱 비용으로의 비교로 프로세싱 이득을 계산한다. 리매핑 블록(324)은 조정된 집합들(330)을 생성하기 위해 프로세싱된 비용으로 프로세싱 이득을 계산하고 비교할 수 있다.
리매핑 블록(324)은 메모리 집합들(246)을 위한 조정을 트리거하거나 프로세싱 이득과 프로세싱 비용의 계산과 비교에 근거하여 조정된 집합들(330)을 생성할 수 있다. 예를 들면, 리매핑 블록(324)은 하기의 수학식 1과 같이 나타나는 어림 매커니즘(heuristic mechanism)에 따라 조정된 집합들(330)을 생성할 수 있다.
Figure pat00001
리매핑 블록(324)은 다양한 팩터들에 근거하여 이득, 비용, 트리거, 또는 그것들의 조합을 계산할 수 있다.
팩터들은 ‘
Figure pat00002
’로 나타나는 캐시 미스의 서비스를 위한 시간, ‘
Figure pat00003
’로 나타나는 전환 색인 버퍼(TLB: Translation Lookaside Buffer)의 서비스를 위한 시간, ‘
Figure pat00004
’로 나타나는 예측된 반복의 수 또는 임계값 또는 그것들의 조합을 포함할 수 있다. 팩터들은 ‘C’로 나타나는 캐시 미스들의 회수, ‘P’로 나타나는 페이지 이동들의 회수, 'D'로 나타나는 DRAM 대립들, ‘B’로 나타나는 뱅크 대립들을 서비스하기 위한 시간, 또는 그것들의 조합을 포함할 수 있다.
리매핑 블록(324)은 컴퓨팅 시스템(100)에 의해 미리 결정된, 구조적 컴포넌트들(204)로 특정된, 저장 유닛(114) 또는 제어 유닛(112)에 의해 보고된, 액티브 상태(314) 동안 제어 유닛(112)에 의해 관측된, 또는 그것들의 조합에 의한 ‘
Figure pat00005
’, ‘
Figure pat00006
’, ‘
Figure pat00007
’, ‘B’, 또는 그것들의 조합과 같은 다양한 시간들과 임계값들을 이용할 수 있다. 리매핑 블록(324)은 ‘
Figure pat00008
’, ‘C’, 'P', 'D', 또는 그것들의 조합과 같은 계산 또는 액세스 및 다양한 수들 및 예측을 할 수 있다.
다양한 수들은 다양한 시간들 또는 임계값들과 유사하게 미리 결정되고, 보고되고, 관측되고, 또는 그것들의 조합이 될 수 있다. 다양한 수들은 액세스 프로파일(325) 내 포함된 바와 같은 액티브 상태(314) 동안 결정되거나 계산될 수도 있다.
리매핑 블록(324)은 예를 들어, 수학식 1에서 평가된 좌측에 나타낸 비용보다 수학식 1에서 우측에 나타낸 계산된 이득이 더 크면, 메모리 집합들(246)의 조정에 의해 조정된 집합들(330)을 생성할 수 있다. 리매핑 블록(324)은 불규칙 상태(326)에 응답하여 조정된 집합들(330)을 생성하기 위한 대립 소스(328)에 대한 재이동, 교정, 리매핑, 또는 그것들의 조합에 근거하여 메모리 집합들(246)을 조정할 수 있다.
리매핑 블록(324)은 메모리 집합들(246) 또는 대립 소스(328)에 연관된 그것의 일부를 교체하기 위해 조정된 집합들(330)을 생성하기 위한 메모리 집합(246)으로부터 페이지, 어드레스, 컴포넌트, 또는 그것들의 조합을 위한 제거, 교정, 리매핑, 또는 그러한 동작들의 조합을 수행할 수 있다. 예를 들면, 리매핑 블록(324)은 메모리 집합들(246)을 위한, 타겟 CPU들 내 오래된 페이지 매핑 및 콜드 캐시 미스들 내 결과를 위한 TLB 내 슈팅 다운 엔트리들을 포함하는 페이지 이동에 근거하여 조정된 집합들(330)을 생성할 수 있다.
리매핑 블록(324)은 운영 체제(240)의 동작 동안 또는 운영 체제(100)의 재설정 또는 부팅 매커니즘(238)의 재초기화 없이 액티브 상태(314)를 위한 것과 같은 조정된 집합들(330)을 동적으로 생성할 수 있다. 리매핑 블록(324)은 불규칙 상태(326)에 응답하거나 상태 블록(320)이 운영 체제(240)의 동작 동안 또는 액티브 상태(314)를 위한 불규칙 상태를 결정하면, 조정된 집합들(330)을 생성할 수 있다.
리매핑 블록(324)은 윈도우의 이동 또는 샘플 당 개별적으로 수학식 1에서 예시된 어림 매커니즘을 이용할 수 있다. 어림 매커니즘은 이전 히스토리에 근거한 것을 나타낼 수 있고, 반복 회수
Figure pat00009
는 미래에서 예측될 수 있다. 반복들 각각은 DRAM 뱅크 대립들 내 결과일 수 있고, 실행 시간 오버헤드의 결과이다. DRAM 내 미스 서비스를 위한 시간은 tRP + tRCD + tCL로 나타낼 수 있다. 어림 매커니즘은 TLB 페이지 워크들과 캐시 웜업 시간을 필요로 하는 이동 페이지들을 위한 시간을 갖는 오버헤드의 실행을 비교할 수 있다.
일정 시간 값들이 TLB와 캐시 미스들을 서비스하기 위해 사용될 수 있거나, 운영 체제(240)는 그러한 정보를 위한 부트 시간에서 CPU를 프로파일할 수 있는 것 중 하나를 할 수 있다. 새로운 페이지들은 프로파일링을 통해 이용 가능할 수 있는 마지막 액세스를 위한 최소 이용 또는 가장 긴 시간과 같은, 다양한 선택 매커니즘을 사용하여 병렬 프레임워크로부터 선택될 수 있다.
생성된 조정된 집합들(330)은 에러율의 감소와 효율의 증가를 동적으로 제공하는 것을 발견할 수 있다. 시스템의 재설정 또는 부팅 매커니즘(238)의 재시작없는 액티브 상태(314) 동안 조정된 집합들(330)의 동적 생성은 컴퓨팅 시스템(100)을 위한 계속 진행 중인 프로세스들의 차단없이 에러들 또는 대립들의 소스들을 균일하게 교정할 수 있다. 더욱이, 조정된 집합들(330)은 이득이 비용을 초과할 때 동적으로 생성될 수 있음으로써, 교정의 순이익을 보존할 수 있다.
동적으로 생성된 조정된 집합(330)은 운영 체제(240)의 런타임 페이지 할당의 구현을 포함할 수 있다. 조정된 집합들(330)의 동적 생성은 하나의 타임 이후에 DRAM 리소스 컨텐션을 제거 또는 감소를 통해 최적화를 제공할 수 있고, 정적 페이지 할당(static page allocation)은 다른 시스템 프로세스들을 갖는 어플리케이션들의 런타임 행동 또는 인터랙션들을 고려하지 않는다.
트랩 기능(329)은 프로세싱된 오버헤드 비용을 최소화하는 동안 운영 체제(240)를 위한 에러 또는 대립의 교정을 위한 능력을 제공할 수 있는 것을 발견할 수 있다. 트랩 기능(329)은 인스트럭션 스트림을 통해 파싱하고, 인스트럭션들을 로드하고 저장의 식별은 상술한 교정들과 조정들을 활성화하는 DRAM/메모리 제어기 클러스터에서 물리 어드레스들 내 운영 체제(240)를 위한 인사이트를 제공한다. 더욱이, 트랩 기능(329)은 가상 머신들의 비교에서 그것의 단순화에 근거하여 오버헤드 비용을 최소화할 수 있다.
주입 구간(injection interval)(331)에 따라 인스트럭션 스트림 내에 정기적으로 주입된 트랩 기능(329)은 효율적인 조정들과 교정들을 제공한다.
주입 구간(331)에 따라 인스트럭션 스트림 내에 정기적으로 주입된 트랩 기능(329)으로부터 결과된 규칙적인 보고는 대립들, 에러들, 그것의 소스들, 또는 그것들이 조합을 위한 정도, 강도, 크기, 양, 또는 그것들의 조합을 위한 측정을 제공한다. 규칙적인 보고는 상술한 이익과 비용의 균형을 위해 사용될 수 있다. 조정된 집합들(330)의 생성의 이익이 그것의 비용을 초과하면, 규칙적인 보고의 결과들은 트리거 조정들에 사용될 수 있음으로써, 프로세스들로부터 전체 이득을 보존하고, 컴퓨팅 시스템(100)을 위한 효율을 제공한다.
조정 블록(304)은 상술한 바와 같은 메모리 집합들246) 또는 그것의 컨텐트의 교정을 위한 병렬 프레임워크(248), 메모리 관리 유닛(244), 부팅 매커니즘(238), 또는 그것들의 조합을 사용할 수 있다. 조정 블록(304)은 제어 유닛(112), 제어 인터페이스(122), 저장 유닛(114), 저장 인터페이스(124), 또는 그것들의 조합을 추가로 사용할 수 있다. 조정 블록(304)은 제어 유닛(112), 저장 유닛(114), 또는 그것들의 조합 내 조정된 집합들(330)과 같은 프로세싱 결과를 저장할 수 있다.
조정된 집합들(330)을 생성한 이후, 제어 흐름은 밸런싱 블록으로 진행할 수 있다. 제어 흐름은 프레임워크 블록(302)과 조정 블록(304) 사이에서 상술한 바와 같이 유사하게 진행될 수 있으나, 조정된 집합들(330)과 같은 조정 블록(304)의 프로세싱 결과를 사용한다.
제어 흐름은 프레임워크 블록(302)로 되돌아 진행될 수도 있다. 프레임워크 블록(302)은 상술한 바와 같이 운영 체제(240)로 페이지들 또는 물리 어드레스들을 위한 액세스를 제공하기 위해 조정된 집합들(330)을 사용할 수 있다.
밸런싱 블록(306)은 그것에 연관된 컨텍스트를 위한 컴퓨팅 시스템(100)를 최적화하기 위해 구성될 수 있다. 밸런싱 블록(306)은 컴퓨팅 시스템(100)의 전원을 보존하고, 사용을 연장하기 위해 최적화할 수 있다. 밸런싱 블록(306)은 프로세싱 속도 또는 용량을 최대화하기 위해 추가로 최적화할 수 있다. 밸런싱 블록(306)은 컴퓨팅 시스템(100)을 최적화하기 위한 조건 블록(332), 관리 블록(management block)(334), 그것들의 조합을 포함할 수 있다.
조건 블록(332)은 컴퓨팅 시스템)(100)을 위한 컨텍스트를 결정하기 위해 구성될 수 있다. 조건 블록(332)은 현재 수요(current demand)(336)의 계산에 의해 컨텍스트를 결정할 수 있다.
현재 수요(336)는 컴퓨팅 시스템(100)의 전류 상태 또는 사용을 위해 원할수 있거나 필요로 하는 조건, 리소스, 상태, 또는 그것들의 조합을 나타낸다. 현재 수요(336)는 컴퓨팅 시스템(100)을 위해 현재 필요로 하거나 원할 수 있는, 컴퓨팅 시스템(100)을 위한 필요 또는 요구를 위해 현재 프로젝트된, 또는 그것들의 조합인 전원 소모(power consumption)(338), 프로세싱 용량(processing capacity)(340), 또는 그것들의 조합에 연관될 수 있다.
전원 소모(338)는 컴퓨팅 시스템(100)의 동작을 위해 필요로 하는 에너지의 양을 포함할 수 있다. 프로세싱 용량(340)은 컴퓨팅 시스템(100)의 동작을 위해 필요로 하는 계산된 비용 또는 수요의 양적인 표현을 포함할 수 있다.
프로세싱 용량(340)은 클럭 사이클들의 회수, 메모리의 양, 쓰레드들의 개수, 회로의 점유 양, 코어들의 개수, 구조적 컴포넌트들(204)의 인스턴스들, 페이지들의 회수, 또는 그것들의 조합을 포함할 수 있다. 컴퓨팅 시스템(100)의 동작을 위한 전원 소모(338), 프로세싱 용량(340), 또는 그것들의 조합은 구조적 컴포넌트들(204)의 동작 또는 사용, 현재 또는 인스트럭션들 또는 프로세스들, 어플리케이션의 현재 동작 중인 동작 또는 스케쥴된 동작, 또는 그것들에 특별히 대응되거나 영향을 받을 수 있다.
조건 블록(332)은 다양한 인자(factor)들에 근거하여 현재 수요를 계산할 수 있다. 예를 들면, 조건 블록(332)은 컴퓨팅 시스템(100) 또는 저장 유닛(114)으로 현재 적용 가능한 프로세스, 어플리케이션, 그것의 상태 또는 상황, 컴퓨팅 시스템(100)에 연관된 조건 또는 상태, 그것에 연관된 중요성 또는 우선 순위, 구조적 컴포넌트들(204)의 식별 또는 사용량, 컴포넌트 또는 어플리케이션의 소비 프로파일, 또는 그것들의 조합의 식별에 근거하여 현재 수요(336)를 계산할 수 있다.
또 예를 들면, 조건 블록(332)은 사용 패턴들, 개인 선호들, 백그라운드 프로세스들, 스케쥴된 프로세스들, 프로젝트된 사용들 또는 상태들, 또는 그것들의 조합에 근거하여 현재 수요(336)를 계산할 수 있다. 더 상세한 예로서, 조건 블록(332)은 현재 수요(336)를 계산하기 위해 레코드들 또는 히스토리, 그것 내의 패턴, 또는 그것들의 조합을 수집하고 사용할 수 있다. 또 더 상세한 예로서, 조건 블록(332)은 백그라운드 프로세스, 프로젝트된 사용 또는 상태, 스케쥴된 프로세스, 또는 그것들의 조합을 결정하기 위해 부품(컴포넌트) 레벨 또는 운영 체제 레벨에서 달력 또는 시스템 스케쥴러를 사용할 수 있다.
또 예를 들면, 조건 블록(332)은 원하는 배터리 수명, 남아있는 에너지 레벨, 또는 그것들의 조합에 근거하여 현재 수요(336)를 계산할 수 있다. 또 예를 들면, 조건 블록(302)은 구현을 위한 진행 또는 프로젝트된 것 내의 현재의 인스트럭션, 프로세스, 어플리케이션 또는 그것들의 조합에 연관된 계산된 강도 또는 복잡도에 근거하여 현재 수요(336)를 계산할 수 있다.
조건 블록(332)은 현재 수요(336)의 계산을 위해 상술한 다양한 문맥 파라미터들을 이용하기 위한 방법, 프로세스, 회로, 수학식, 또는 그것들의 조합을 포함할 수 있다. 조건 블록(332)은 현재 필요로 하거나 요구되는 전원 소모(338), 프로세싱 용량(340), 또는 그것들의 조합을 나타내기 위한 현재 수요(336)를 계산할 수 있다.
관리 블록(334)은 컨텍스트에 따른 컴퓨팅 시스템(100)의 동작을 조정하기 위해 구성될 수 있다. 관리 블록(334)은 메모리 집합들(246) 또는 조정된 집합들(330)을 통해 구조적 컴포넌트들(204)의 사용 또는 이용 가능성의 제어에 근거한 동작을 조정할 수 있다. 관리 블록(334)은 전원 소모(338), 프로세싱 용량(340), 또는 그것들의 조합에 연관된 컨텍스트를 나타내기 위해 현재 수요(336)에 근거한 동작을 조정할 수 있다.
관리 블록(334)은 이용가능 리소스 프로파일(usable resource profile)(342)의 생성과 조정에 의해 컴퓨팅 시스템(100)의 동작을 조정할 수 있다. 이용가능 리소스 프로파일(342)은 컴퓨팅 시스템(100)의 컨텍스트를 어드레싱 하기 위한 구조적 컴포넌트들(204)의 제어 또는 이용 가능성을 나타낸다. 이용가능 리소스 프로파일(342)은 구조적 컴포넌트들(204) 또는 다른 컴포넌트들의 액세스 또는 사용을 인에이블 또는 디스에이블에 대응될 수 있다.
이용가능 리소스 프로파일(342)은 메모리 집합들(246) 또는 조정된 집합들(330) 내 페이지들 또는 인스턴스들로 액세스의 인에이블을 위해 제어 또는 제한을 포함할 수 있다. 메모리 집합들(246) 또는 조정된 집합들(330)은 구조적 컴포넌트들(204) 도는 그것들의 병렬 구조(216)를 반영할 수 있으며, 메모리 집합들(246) 또는 조정된 집합들(330)로 엑세스의 제어 또는 제한은 구조적 컴포넌트들(204)로의 액세스 또는 구조적 컴포넌트들(204)의 사용을 제어할 수 있다.
관리 블록(334)은 구조적 컴포넌트들(204)의 제어를 위한 현재 수요(336)에 근거하여 이용가능 리소스 프로파일(342)을 생성하고 조정할 수 있다. 관리 블록(334)은 프로세싱 용량(340), 전원 소모(338), 또는 그것들의 조합의 최적화 또는 밸런스를 위해 현재 수요(336)에 근거하여 이용가능 리소스 프로파일(342)을 생성하거나 조정할 수 있다.
관리 블록(334)은 현재 수요(336)에 의해 나타내는 전원 소모(338), 프로세싱 용량(340), 또는 그것들의 조합에 대응을 위해 필요로 하는 자원들의 양을 결정할 수 있다. 예를 들면, 관리 블록(334)은 현재 수요(336) 또는 컨텍스트에 따른 전원 소모(338)를 최적화하고 감소하기 위해 구조적 컴포넌트들(204)의 불가능한 부분으로 이용가능 자원 프로파일(342)을 생성하거나 조절할 수 있다. 전원 소모(338)를 위한 최적화 또는 감소는 프로세싱 용량(340)의 감소 내 결과일 수 있다.
또 예를 들면, 관리 블록(334)은 현재 수요(336) 또는 컨텍스트에 따른 프로세싱 용량(340)을 최적화하고 증가하기 위해 구조적 컴포넌트들(204)의 활성화 부분들로 이용가능 자원 프로파일(342)을 생성하고 조정할 수 있다. 프로세싱 용량(340) 내의 최적화 또는 증가는 전원 소모(338)를 위한 증가 내 결과일 수 있다.
관리 블록(334)은 구조적 컴포넌트들(204)에 연관된 성능 또는 소비의 결정에 의해 이용가능 리소스 프로파일(342)을 생성 또는 조정할 수 있다. 관리 블록(334)은 이용가능 리소스 프로파일(342)의 생성 또는 조정 내 현재 수요(336)에 부합하기 위한 구조적 컴포넌트들(204)의 하나 이상의 인스턴스들을 인에이블 또는 디스에이블할 수 있다.
관리 블록(334)은 현재 수요(336)를 위한 전원 소모(338)와 프로세싱 용량(340)을 추가적으로 밸런스할 수 있다. 관리 블록(334)은 현재 수요(336)를 위한 전원 소모(338)와 프로세싱 용량(340)의 결합에 근거하여 밸런스할 수 있다. 관리 블록(334)은 전원 소모(338)와 프로세싱 용량(340)의 밸런싱을 위한 컴퓨팅 시스템(100)에 의해 미리 결정된 프로세스, 방법, 수학식, 회로, 또는 그것들의 조합을 포함할 수 있다.
예를 들면, 관리 블록(334)은 구조적 컴포넌트들(204)에 따른, 전원 소모(338)와 프로세싱 용량(340)의 이익에 따른 것과 같은 리소스들의 양의 평균일 수 있다. 또 예를 들면, 관리 블록(334)은 전원 소모(338)와 프로세싱 용량(340)의 생성 또는 시도되는 프로세스들, 인스트럭션들, 어플리케이션들, 또는 그것들의 조합을 위한 우선순위, 긴급, 중요, 또는 그것들의 조합에 따른 가중치들을 추가로 사용할 수 있다.
또 예를 들면, 관리 블록(334)은 조정된 집합들(330)의 생성에 의한 이용가능 리소스 프로파일(342)을 생성 또는 조정할 수 있다. 더 상세한 예로서, 관리 블록(334)은 필요로 하는 것을 포함하기 위한 페이지들 또는 뱅크들 또는 칩들과 같은 구조적 컴포넌트들의 제한된 개수들 내 개방 사용된 페이지들을 이동할 수 있다. 관리 블록(334)은 상술한 리매핑 블록(324)과 유사한 그러한 이동의 비용과 이익을 밸런스할 수 있다. 관리 블록(334)은 비용과 이익의 비교에 근거하여 상술한 리매핑 블록(324)과 유사한 리맵(remap)을 추가로 할 수 있다.
컨텍스트에 근거하여 동적으로 생성된 이용가능 리소스 프로파일(342)은 컴퓨팅 시스템(100)의 성능의 감소없이 더 낮은 전체 전원 소모를 제공한다. 메인 메모리는 전체 프로세서 또는 시스템 온 칩(SoC: System on Chip) 전원으로 실질적으로 기여할 수 있다. 전원 소모는 메모리 채널 번호들의 증가와 함께 더욱 증가할 수 있다. 액티브 전원 소모가 성능을 초과하기를 원할 때, 이용가능 자원 프로파일(342)은 액티브 메모리 채널들의 최소 개수를 지원하는 페이지들로 할당하기 위한 프레임워크의 조정일 수 있고, 성능 요구들을 여전히 충족한다. 이용 가능 리소스 프로파일(342)은 저 전원 상태들로의 전원을 위해 비할당된 메모리 채널들을 허용할 수 있고, 액티브 시스템 전원을 효율적으로 감소시킬 수 있다. 성능 버스트들이 요구될 때, 이용가능 리소스 프로파일(342)로부터 업데이트된 프레임워크 정책들은 인액티브(비활성) 메모리 채널들로부터 메모리를 할당할 수 있다.
전원 소모(338)와 프로세싱 용량(340)에 따른 현재 수요(336)를 사용하여 동적으로 생성된 이용가능 리소스 프로파일(342)은 프로세싱 효율이 효율적으로 증가될 수 있다. 이용가능 리소스 프로파일(342)은 메모리 집합들(246) 또는 조정된 집합들(330)을 통해 구조적 컴포넌트들(204)과 그것의 병렬 구조(216)의 특정한 액티브 상태(314) 동안 전원 소모(338)와 프로세싱 용량(340)을 동적으로 밸런스할 수 있다.
이용가능 리소스 프로파일(342)은 이진 모드 대시에 전원 소모(338)와 프로세싱 용량(340)의 다양한 레벨들 또는 조합들을 밸런싱하기 위한 연속체(continuum)를 제공할 수 있다. 입상도 레벨(242)의 가장 낮은 인스턴스에서 리소스를 이용하는 연속체는 미리 결정된 모드에 따른 컴포넌트들의 미리 결정된 집합 대신에 전원 소모(338)와 프로세싱 용량(340) 사이의 밸런스를 맞추기 위해 필요한 구조적 컴포넌트들(204)의 주문형 집합(customized set)을 제공한다.
밸런싱 블록(306)은 상술한 바와 같은 컨텍스트에 근거한 컴퓨팅 시스템(100)의 최적화를 위해 병렬 프레임워크(248), 메모리 관리 유닛(244), 부팅 매커니즘(238), 또는 그것들의 집합을 사용한다. 밸런싱 블록(306)은 제어 유닛(112), 제어 인터페이스(122), 저장 유닛(114), 저장 인터페이스(124), 또는 그것들의 조합을 추가로 사용할 수 있다. 밸런싱 블록(306)은 제어 유닛(112), 저장 유닛(114), 또는 그것들의 조합 내 이용가능 리소스 프로파일(342)과 같은 프로세싱 결과를 저장할 수 있다.
최적화 이후, 제어 흐름은 프레임워크 블록(302)으로 진행할 수 있다. 제어 흐름은 프레임워크 블록(302)과 조정 블록(304) 사이에서 상술한 바와 같이 유사하게 진행될 수 있지만, 이용가능 리소스 프로파일(342)과 같은 밸런싱 블록(306)의 프로세싱 결과들을 사용할 수 있다.
프레임워크 블록(302)은 컴퓨팅 시스템(100), 장치(102), 구조적 컴포넌트들(204), 또는 그것들의 조합의 제어와 동작을 위해 이용가능 리소스 프로파일(342)을 사용할 수 있다. 프레임워크 블록(302)은 이용가능 리소스 프로파일(342) 내 페이들에 따른 구조적 컴포넌트들(204)의 지정된 인스턴스 또는 양을 갖는 상술한 운영 체제(240)로 페이지들 또는 물리 어드레스들을 위한 액세스를 제공할 수 있다.
도 4는 본 발명에 따른 동작 내 펌웨어 레지스터를 예시적으로 도시한 도면이다.
도 4를 참조하면, 본 발명의 실시예에 따른 응용 예들로서 컴퓨팅 시스템(100)을 도시한다. 도 4는 본 발명의 실시예에 따른 예들로서, 예를 들면, 스마트폰, 자동차의 대쉬 보드, 노트북 컴퓨터와 같은 컴퓨팅 시스템(100)을 위한 다양한 실시예들을 도시한다. 이러한 응용 예들은 도 2의 메모리 집합들(246), 도 3의 조정된 집합들(330), 도 3의 이용가능 리소스 프로파일(342), 또는 그것들의 조합을 이용한 전원 소모를 최소화하는 동안 개선된 프로세싱 성능을 제공하기 위해 본 발명의 다양한 실시예들의 중요성을 도시한다.
본 발명의 실시예는 집적 회로 프로세서 또는 시스템 온 칩이고, 상술한 블록들은 그것에 임베디드되고, 본 발명의 다양한 실시예들은 프로세서의 개선된 성능을 위한 미스들로부터의 패널티들이 감소하는 동안 인스트럭션들 또는 데이터 액세싱을 위해 필요로 하는 전체 시간, 전원, 또는 그것들의 조합을 감소할 수 있다.
스마트폰, 대쉬 보드, 노트북 컴퓨터와 같은 컴퓨팅 시스템(100)은 본 발명의 다양한 실시예들을 갖는 인쇄 회로 기판(PCB: printed circuit board) 또는 본 발명의 다양한 실시예들을 갖는 전자 어셈블리(electronic assembly)와 같은 하나 이상의 서브 시스템(미도시)을 포함할 수 있다.
도 5는 본 발명에 따른 컴퓨팅 시스템의 동작 방법을 예시적으로 도시한 순서도이다.
도 5를 참조하면, 방법(500)은 구조적 컴포넌트들의 병렬 구조를 나타내는 구조적 프로파일을 결정하는 단계(502단계); 및 병렬 구조를 나타내기 위한 구조적 프로파일에 근거하여 제어 유닛에 대한 메모리 집합들을 생성하는 단계(504단계)를 포함한다.
방법(500)은 식별 블록으로 액세스 가능한 입상도 레벨에 근거한 구조적 프로파일을 결정하는 단계(502단계)를 더 포함할 수 있다. 방법(500)은 입상도 레벨의 가장 낮은 인스턴스에 근거한 메모리 집합들을 생성하는 단계를 포함하는 메모리 집합들을 생성하는 단계(504단계)를 더 포함할 수 있다. 방법(500)은 내에, 이전, 이후, 또는 두 개의 단계들(502단계, 504단계) 사이와 같은 502단계, 504단계, 또는 그것들의 조합에 관련되고, 504단계 내 대체 또는 추가적인 입력, 하나 이상의 메모리 집합들에 연관된 불규칙 상태와 같은 것에 응답하여 하나 이상의 메모리 집합들 또는 그것 내의 일부를 교체하기 위한 하나 이상의 조정된 집합들을 동적으로 생성하는 단계, 하나 이상의 구조적 컴포넌트들을 제어하기 위한 현재 수요에 근거한 이용 가능 리소스 프로파일을 조정하는 단계, 병렬 구조를 반영하는 하나 이상의 메모리 집합들을 나타내기 위한 비 선형 액세스 매커니즘에 따른 적합한 이용가능 집합을 생성하는 단계, 또는 그것들의 조합을 더 포함할 수 있다.
방법, 프로세스, 장치, 기기, 제품, 및/또는 시스템은 간소화하고, 비용 효율이 높고, 복잡하지 않고, 다목적이고, 정확하고, 민감하고, 효율적이고, 준비, 효율, 경제적인 제조, 응용, 및 이용을 위해 알려진 컴포넌트들의 채용에 의해 구현될 수 있다. 본 발명의 실시예의 다른 중요한 관점에서 비용의 감소, 시스템의 간소화, 및 성능 증가의 역사적인 트렌드에 대한 가치있는 지원들과 서비스들이다.
본 발명의 실시예의 이것들과 다른 가치있는 관점의 결과로 적어도 다음 단계로 기술의 상태로 일어날 수 있다.
본 발명이 특정 최적 모드와 함께 기술된 반면, 많은 대체들, 수정들, 및 변화들이 이전의 기술을 고려하여 해당 기술 분야에서 명백할 것이다. 따라서, 그것은 특허청구범위에 포함된 범위 내에 있는 대체들, 수정들, 및 변화들과 같은 모든 것들을 포괄하는 것으로 의도될 것이다. 첨부된 도면들 내에서 여기에서 설명 또는 도시된 모든 것들이 예시적이고 제한되지 않는 의미로 해석될 수 있다.
100: 컴퓨팅 시스템 102: 장치
112: 제어 유닛 114: 저장 유닛
116: 통신 유닛 118: 사용자 인터페이스
122: 제어 인터페이스 124: 저장 인터페이스
126: 소프트웨어 128: 통신 인터페이스
130: 디스플레이 인터페이스 240: 운영체제
204: 구조적 컴포넌트들 206: 채널들
208: 모듈들 210: 랭크들
212: 칩들 214: 뱅크들
216: 병렬 구조 218, 220: 채널 컴포넌트들
222, 224: 모듈 컴포넌트들 226, 228: 랭크 컴포넌트들
230, 232: 칩 컴포넌트들 234, 236: 뱅크 컴포넌트들
238: 부팅 매커니즘 240: 운영체제
244: 메모리 관리 유닛 246: 메모리 집합들
248: 병렬 프레임워크 250: 구조-반영 조직
252, 254: 페이지들 256: 페이지 할당 매커니즘
258: 페이지 할당 기능 302: 프레임워크 블록
304: 조정 블록 306: 밸런싱 블록
308: 식별 블록 310: 배열 블록
312: 구조적 프로파일 314: 액티브 상태
316: 적합한 이용가능 집합들 318: 비선형 액세스 매커니즘
320: 상태 블록 322: 소스 블록
324: 리매핑 블록 325: 액세스 프로파일
326: 불규칙 상태 327: 주소 추적 알고리즘
329: 트랩 기능 330: 조정된 집합들
331: 주입 구간 334: 관리 블록
336: 현재 수요 338: 전원 소모
340: 프로세싱 용량 342: 이용가능 리소스 프로파일

Claims (10)

  1. 구조적 컴포넌트들의 병렬 구조를 나타내기 위한 구조적 프로파일을 결정하는 식별 블록; 및
    상기 식별 블록에 연결되고, 상기 병렬 구조를 나타내기 위한 구조적 프로파일에 근거하여 메모리 집합들을 생성하는 배열 블록을 포함하는 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 식별 블록은 상기 식별 블록으로 액세스할 수 있는 입상도 레벨에 근거하여 구조적 프로파일을 결정하고,
    상기 배열 블록은 상기 입상도 레벨의 가장 낮은 인스턴스에 근거하여 상기 메모리 집합들을 생성하는 컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    하나 이상의 메모리 집합들에 연관된 불규칙 상태에 응답하여 상기 하나 이상의 메모리 집합들 또는 그것의 일부를 교체하기 위한 하나 이상의 조정된 집합들을 동적으로 생성하는 조정 블록을 더 포함하는 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    하나 이상의 구조적 컴포넌트들을 제어하기 위해 현재 수요에 근거하여 사용가능 자원 프로파일을 조정하는 균형 블록을 더 포함하는 컴퓨팅 시스템.
  5. 제 1 항에 있어서,
    상기 식별 블록은 상기 병렬 구조를 반영하는 상기 하나 이상의 메모리 집합들을 나타내기 위한 비선형 액세스 매커니즘에 따라 적합한 이용가능 집합을 생성하는 컴퓨팅 시스템.
  6. 제 1 항에 있어서,
    상기 식별 블록은 저장 유닛 내 상기 구조적 컴포넌트의 병렬 구조를 나타내기 위한 구조적 프로파일을 결정하고,
    상기 배열 블록은 부팅 매커니즘을 위한 상기 병렬 구조를 나타내기 위한 상기 구조적 프로파일에 근거하여 메모리 집합들을 생성하고, 운영 체제의 액티브 상태 동안 상기 병렬 구조를 나타내기 위한 메모리 집합들을 동적으로 조절하는 컴퓨팅 시스템.
  7. 제 6 항에 있어서,
    상기 배열 블록은 제 1 뱅크 컴포넌트와 제 2 뱅크 컴포넌트의 병렬 구조를 매칭하기 위한 제 1 페이지와 제 2 페이지를 생성하는 컴퓨팅 시스템.
  8. 제 6 항에 있어서,
    상기 배열 블록에 연결되고, 상기 하나 이상의 메모리 집합들에 액세스를 위한 액티브 상태 동안 상기 불규칙 상태를 검출하는 상태 블록;
    상기 상태 블록에 연결되고, 상기 액티브 상태 동안 상기 불규칙 상태에 연관된 상기 하나 이상의 메모리 집합들 내 대립 소스를 식별하는 소스 블록; 및
    상기 소스 블록에 연결되고, 상기 불규칙 상태에 응답하여 운영 체제의 동작 동안 대립 소스에 연관된 상기 메모리 집합들 또는 그것의 일부를 교체하기 위한 대립 소스에 근거하여 조정된 집합들을 동적으로 생성하는 리매핑 블록을 더 포함하는 컴퓨팅 시스템.
  9. 제 6 항에 있어서,
    상기 배열 블록에 연결되고, 프로세싱 용량에 연관된 현재 수요를 계산하는 조건 블록; 및
    상기 프로세싱 용량을 최적화하기 위한 상기 구조적 컴포넌트들을 제어하기 위한 상기 현재 수요에 근거하여 이용가능 리소스 프로파일을 조정하는 관리 블록을 포함하는 컴퓨팅 시스템.
  10. 제 6 항에 있어서,
    상기 배열 블록에 연결되고, 전원 소모에 연관된 현재 수요를 계산하는 조건 블록; 및
    상기 조건 블록에 연결되고, 상기 전원 소모를 최적화하기 위한 구조적 컴포넌트들을 제어하기 위한 현재 수요에 근거하여 이용가능 리소스 프로파일을 조정하는 관리 블록을 포함하는 컴퓨팅 시스템.
KR1020150106015A 2014-12-31 2015-07-27 병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법 KR20160081765A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462098508P 2014-12-31 2014-12-31
US62/098,508 2014-12-31
US14/674,399 US20160188534A1 (en) 2014-12-31 2015-03-31 Computing system with parallel mechanism and method of operation thereof
US14/674,399 2015-03-31

Publications (1)

Publication Number Publication Date
KR20160081765A true KR20160081765A (ko) 2016-07-08

Family

ID=56164339

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150106015A KR20160081765A (ko) 2014-12-31 2015-07-27 병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US20160188534A1 (ko)
KR (1) KR20160081765A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10921988B2 (en) * 2018-02-15 2021-02-16 SK Hynix Inc. System and method for discovering parallelism of memory devices
US10983895B2 (en) * 2018-06-05 2021-04-20 Unravel Data Systems, Inc. System and method for data application performance management

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3451576B2 (ja) * 1996-09-20 2003-09-29 株式会社日立製作所 情報処理システム
KR100562906B1 (ko) * 2003-10-08 2006-03-21 삼성전자주식회사 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
JP2008090395A (ja) * 2006-09-29 2008-04-17 Hitachi Ltd 計算機システム、演算用ノード及びプログラム
US8402249B1 (en) * 2009-10-19 2013-03-19 Marvell International Ltd. System and method for mixed-mode SDRAM address mapping
US20150169445A1 (en) * 2013-12-12 2015-06-18 International Business Machines Corporation Virtual grouping of memory

Also Published As

Publication number Publication date
US20160188534A1 (en) 2016-06-30

Similar Documents

Publication Publication Date Title
Ke et al. Recnmp: Accelerating personalized recommendation with near-memory processing
Ke et al. Near-memory processing in action: Accelerating personalized recommendation with axdimm
US20190317901A1 (en) System and method for optimizing performance of a solid-state drive using a deep neural network
Yoon et al. Adaptive granularity memory systems: A tradeoff between storage efficiency and throughput
US8321703B2 (en) Power aware memory allocation
US8533719B2 (en) Cache-aware thread scheduling in multi-threaded systems
US11327869B2 (en) Distributed architecture for determining performance parameters
US20170212835A1 (en) Computing system with memory management mechanism and method of operation thereof
US11663133B2 (en) Memory tiering using PCIe connected far memory
US20170091112A1 (en) Configurable cache architecture
US20120330802A1 (en) Method and apparatus for supporting memory usage accounting
Bostancı et al. DR-STRaNGe: end-to-end system design for DRAM-based true random number generators
US20220214835A1 (en) Adaptive-feedback-based read-look-ahead management system and method
Shingari et al. Characterization and throttling-based mitigation of memory interference for heterogeneous smartphones
US10860488B1 (en) Dynamic enabling of metadata prefetch into cache
Gifford et al. Dna: Dynamic resource allocation for soft real-time multicore systems
Li et al. SEAL: User experience-aware two-level swap for mobile devices
Kang et al. $ Q $-Value Prediction for Reinforcement Learning Assisted Garbage Collection to Reduce Long Tail Latency in SSD
Wang et al. Dynamic memory balancing for virtualization
KR20160081765A (ko) 병렬 매커니즘을 갖는 컴퓨팅 시스템 및 그것의 동작 방법
US9798665B1 (en) Cache eviction according to data hit ratio and service level agreement
US10983832B2 (en) Managing heterogeneous memory resource within a computing system
Noorshams et al. Modeling of i/o performance interference in virtualized environments with queueing petri nets
Imamura et al. The analysis of inter-process interference on a hybrid memory system
CN111183414A (zh) 基于服务级别协议的高速缓存方法和系统