KR20150128907A - 고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정 - Google Patents

고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정 Download PDF

Info

Publication number
KR20150128907A
KR20150128907A KR1020157028207A KR20157028207A KR20150128907A KR 20150128907 A KR20150128907 A KR 20150128907A KR 1020157028207 A KR1020157028207 A KR 1020157028207A KR 20157028207 A KR20157028207 A KR 20157028207A KR 20150128907 A KR20150128907 A KR 20150128907A
Authority
KR
South Korea
Prior art keywords
controller logic
volatile memory
command
change
memory devices
Prior art date
Application number
KR1020157028207A
Other languages
English (en)
Other versions
KR101764044B1 (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 KR20150128907A publication Critical patent/KR20150128907A/ko
Application granted granted Critical
Publication of KR101764044B1 publication Critical patent/KR101764044B1/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
    • G06F13/1689Synchronisation and timing concerns
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1008Graphical user interface [GUI]
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microcomputers (AREA)
  • Power Sources (AREA)

Abstract

고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정 기술들에 관련된 방법 및 장치가 기재되어 있다. 일 실시예에서, 제어기 로직이 하나 이상의 비휘발성 메모리 디바이스에 대한 액세스를 제어한다. 제어기 로직은, 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 제어기 로직에 하나 이상의 비휘발성 메모리 디바이스를 연결하는 버스, 및 제어기 로직 중 하나 이상의 동작 주파수에서의 변경을 야기시킨다. 또한, 제어기 로직은 커맨드에 응답하여 동작 주파수에서의 변경을 야기시킬 수 있다. 또한, 시스템 능력에 기초하여 고체 상태 스토리지 디바이스 성능을 스케일링하기 위해 전력 한계를 변경하는 것이 가능하게 된다. 다른 실시예들이 또한 개시되며 청구된다.

Description

고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정{ON-THE-FLY PERFORMANCE ADJUSTMENT FOR SOLID STATE STORAGE DEVICES}
관련 출원
본 출원은, 2013년 5월 31일자로 출원되었으며 발명의 명칭이 "ON-THE-FLY PERFORMANCE ADJUSTMENT FOR SOLID STATE STORAGE DEVICES"인 미국 가특허 출원 제61/829,983호, 및 2013년 6월 27일자로 출원되었으며 발명의 명칭이 "ON-THE-FLY PERFORMANCE ADJUSTMENT FOR SOLID STATE STORAGE DEVICES"인 미국 특허 출원 제13/929,708호에 관련되며 이들 출원으로부터 우선권을 주장한다.
기술 분야
본 개시물은 일반적으로 일렉트로닉스 분야에 관한 것이다. 보다 구체적으로는, 본 발명의 일부 실시예들은 일반적으로 고체 상태 스토리지 디바이스들(solid state storage devices)에 대한 즉각적인 성능 조정(on-the-fly performance adjustment) 기술들에 관한 것이다.
일반적으로, 컴퓨팅 시스템에서 데이터를 저장하는데 사용되는 메모리는 (휘발성 정보를 저장하는) 휘발성 또는 (영속성 정보를 저장하는) 비휘발성일 수 있다. 휘발성 메모리에 저장된 휘발성 데이터 구조들은 프로그램의 런타임 동안 프로그램의 기능성을 지원하도록 요구되는 일시 또는 중간 정보를 위해 이용된다. 한편, 비휘발성 메모리에 저장된 영속성 데이터 구조들은 프로그램의 런타임을 넘어 이용가능하며, 재사용될 수 있다. 또한, 새로운 데이터는, 사용자 또는 프로그래머가 이 데이터를 영속적인 것으로 하는 것을 결정하기 이전에, 먼저 휘발성 데이터로서 통상적으로 생성된다. 예를 들어, 프로그래머들 또는 사용자들은 프로세서에 의해 직접적으로 액세스가능한 휘발성 메인 메모리에서의 휘발성 구조들의 매핑(즉, 인스턴스화(instantiating))을 야기시킬 수 있다. 한편, 영속성 데이터 구조들은, 플래시 메모리와 같은 비휘발성 메모리 기반 디바이스들 또는 입/출력(I/O 또는 IO) 버스들에 연결된 회전 디스크들과 같은 비휘발성 스토리지 디바이스들 상에서 인스턴스화된다.
성능을 증가시키기 위해서, 일부 시스템들은 비휘발성 스토리지 솔루션을 제공하기 위해 플래시 메모리와 같은 비휘발성 메모리를 포함하는 고체 상태 드라이브(SSD: Solid State Drive)를 이용할 수 있다. 이러한 SSD들은 일반적으로 종래의 하드 디스크 드라이브들(HDD들)보다 더 적은 공간을 차지하고, 더 적은 중량을 가지며, 더 빠르다. 또한, 하드 디스크 드라이브들은 상대적으로 저비용 스토리지 솔루션을 제공하며, 비휘발성 스토리지를 제공하기 위해 많은 컴퓨팅 디바이스에서 사용된다. 그러나, 하드 디스크 드라이브들은 고체 상태 드라이브들과 비교하여 볼 때 많은 전력을 이용할 수 있는데, 그 이유는 하드 디스크 드라이브가 그것의 회전 디스크들을 비교적 고속으로 회전시키는 것이 필요하며, 데이터 판독/기입을 위해 회전하는 디스크들에 대해 디스크 헤드들을 이동시키는 것이 필요하기 때문이다. 모든 이러한 물리적 이동은 열을 발생시키며, 전력 소모를 증가시킨다.
이 때문에, 일부 이동형 디바이스들은 고체 상태 드라이브들 쪽으로 옮겨가고 있다. 또한, 일부 정지형 컴퓨팅 시스템들(예컨대, 데스크톱들, 워크스테이션들, 서버들 등)은 이러한 고체 상태 드라이브들을 사용하여, 성능을 개선할 수 있다. 그러나, 상이한 타입의 컴퓨팅 디바이스들에서 고체 상태 드라이브들에 대해 동일한 이용 모델을 이용하는 것은 항상 성능과 신뢰성 사이의 최적의 밸런스를 초래하지는 않을 수 있다.
상세한 설명은 첨부 도면들을 참조하여 제공된다. 도면들에서, 참조 번호의 최좌측 숫자(들)는 이 참조 번호가 처음 나타나는 도면을 식별한다. 상이한 도면들에서의 동일한 참조 번호들의 이용은 유사하거나 동일한 항목들을 나타낸다.
도 1, 도 5, 도 6 및 도 7은 본 명세서에서 논의된 다양한 실시예들을 구현하는데 이용될 수 있는 컴퓨팅 시스템들의 실시예들의 블록도들을 도시한다.
도 2, 도 4 및 도 4a는 일부 실시예들에 따른 흐름도들을 도시한다.
도 3은 실시예에 따른 고체 상태 스토리지 디바이스의 튜닝에 대한 제어를 제공하는 예시적인 사용자 인터페이스를 도시한다.
도 4b는 실시예에 따른 SSD의 다양한 컴포넌트들의 블록도를 도시한다.
다음의 설명에서, 다양한 실시예들의 철저한 이해를 제공하기 위해서 다수의 특정 상세가 제시된다. 그러나, 본 발명의 다양한 실시예들은 특정 상세들 없이 실시될 수 있다. 다른 경우에, 본 발명의 특정 실시예들을 모호하게 하지 않도록 잘 알려진 방법들, 절차들, 컴포넌트들 및 회로들은 상세하게 설명되지 않았다. 또한, 본 발명의 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로들("하드웨어"), 하나 이상의 프로그램으로 조직된 컴퓨터 판독가능 명령어들("소프트웨어"), 또는 하드웨어와 소프트웨어의 일부 조합을 이용하여 수행될 수 있다. 본 개시물의 목적을 위해, "로직"에 대한 언급은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 일부 조합을 의미할 것이다.
일부 실시예들은 고체 상태 드라이브들에 대한 즉각적인 성능 조정 기술들을 제공한다. 본 명세서에서 논의된 바와 같이, "즉각적인" 또는 "동적" 성능 조정은 일반적으로 컴퓨팅 시스템 리부트 또는 운영 체제(OS) 리부트를 요구하지 않으면서 성능을 조정하는 것을 지칭한다. 또한, 이러한 고체 상태 드라이브들은 플래시 메모리(본 명세서에서 교환가능하게 고체 상태 스토리지 디바이스로서도 지칭됨), 상변화 메모리(PCM: Phase Change Memory), STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리(Resistive Random Access Memory), 3D(3 -Dimensional) 크로스 포인트 메모리(Cross Point Memory) 등을 포함할 수 있다. 따라서, 일부 실시예들은 SSD들의 동적 성능 제어를 가능하게 하는 방법 및/또는 장치를 제공한다. 실시예는, 성능, 신뢰성, 열 제약 및/또는 디바이스 수명 간에 트레이드오프하면서, 최종 사용자들이 SSD들의 성능을 동적으로 제어할 수 있게 한다. 일 실시예에서, (예를 들어, 소프트웨어를 통한) 커맨드 인터페이스는 예를 들어 OS 내로부터 즉각적으로 이러한 성능 트레이드오프를 행하는 것을 허용한다.
실시예에서, 최종 사용자는, 예를 들어 SSD 오버클록킹(over-clocking)을 인에이블하는 것에 의해 SSD의 성능을 조정/튜닝하기 위해서 본 명세서에서 논의된 기술들/피처들을 이용할 수 있다. 오버클록킹은 예를 들어 성능을 증가시키기 위해서 (SSD와 같은) 컴포넌트의 동작 주파수를 통상의/디폴트 동작 주파수를 넘어 증가시키는 것을 일반적으로 지칭한다. 예를 들어, 튜닝은, 열, 전력 및/또는 신뢰성 상태들에서의 변경에 대한 OEM(Original Equipment Manufacturer) 및/또는 최종 사용자 허용오차(tolerance)에 기초할 수 있다. 이러한 접근법들은, 성능, 신뢰성, 전력 소모, 열 상태 등 중의 하나 이상 간에 더 최적의 밸런스를 제공하기 위해서 상이한 타입의 컴퓨팅 디바이스들에서 SSD들에 대해 상이한 특성 또는 이용 모델을 이용하는 것을 허용한다.
또한, 일부 실시예들 없이, 부가적인 전력 전달 및 냉각 능력을 갖는 대형 데스크톱 시스템들에서 사용된 SSD들은 초박형 노트북들에서 사용된 SSD들과 동일한 제약 및 그들의 더 적은 냉각 및 전력 전달 능력 내에서 동작해야 할 수 있다. 또한, 파일 서버는 게이밍 시스템과는 상이한 신뢰성 기대치를 가질 수 있다. 이 때문에, 일부 실시예들은 시스템 설계자(또는 정통한 사용자)가 이들 플랫폼 트레이드오프들에 입력하는 것을 허용한다. 또한, 일부 실시예들은, 예를 들어, SSD의 성능이 실시간으로 또는 런타임 동안, 하나 이상의 (연속적 또는 비연속적) 기간 동안, 그리고/또는 소프트웨어 워크로드 요구(software workload demands), 센서 데이터 및/또는 환경 상태와 같은 다양한 기준들에 기초하여 조정(본 명세서에서 "튜닝"으로도 지칭됨)될 수 있는 플랫폼 기반 SSD "터보(Turbo)" 유사 능력을 제공한다. 부가적으로, 인텔® 코포레이션의 익스트림 튜닝 유틸리티(XTU: Extreme Tuning Utility)는 최종 사용자들이 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU) 및/또는 시스템 메모리를 오버클록킹하여 더 높은 시스템 성능을 달성할 수 있게 한다. 이러한 유틸리티는 최종 사용자들이 그들의 SSD들을 오버클록킹하는 것을 허용하기 위해 실시예에서 확장될 수 있는데, 이는 예를 들어 스토리지 I/O(Input/Output) 경계 워크로드(bound workloads)에 대한 성능 개선을 초래한다. 또한, SSD들을 오버클록킹하는 능력을 허용하면서, 일부 실시예들은 (예를 들어 고체 상태 스토리지 디바이스 제어기가 동작을 중단할 때) 대규모 데이터 손실에 대한 가능성을 회피한다. 또한, 일부 실시예들은 본 명세서에서 SSD들에 적용된 기술들을 논의하고 있지만, 동일하거나 유사한 기술들은 또한 다른 타입의 비휘발성 메모리 디바이스들에 적용될 수 있다는 것이 구상된다.
본 명세서에서 논의된 기술들은, 도 1 내지 도 7을 참조하여 논의된 것들과 같이 다양한 컴퓨팅 시스템들(예를 들어, 스마트폰들, 태블릿들, 휴대용 게임 콘솔들, UMPC들(Ultra-Mobile Personal Computers) 등을 포함함)에서 제공될 수 있다. 보다 구체적으로는, 도 1은 본 발명의 실시예에 따른 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 하나 이상의 프로세서(102-1 내지 102-N)(일반적으로 본 명세서에서 "프로세서들(102)" 또는 "프로세서(102)"로 지칭됨)를 포함할 수 있다. 프로세서들(102)은 상호접속부(interconnection) 또는 버스(104)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함할 수 있는데, 그 일부는 명료성을 위해 프로세서(102-1)만을 참조하여 논의된다. 따라서, 나머지 프로세서들(102-2 내지 102-N) 각각은 프로세서(102-1)를 참조하여 논의된 동일하거나 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본 명세서에서 "코어들(106)" 또는 보다 일반적으로는 "코어(106)"로 지칭됨), 캐시(108)(다양한 실시예들에서 공유 캐시 또는 전용 캐시(private cache)일 수 있음) 및/또는 라우터(110)를 포함할 수 있다. 프로세서 코어들(106)은 단일의 집적 회로(IC) 칩 상에 구현될 수 있다. 또한, 칩은 하나 이상의 공유 및/또는 전용 캐시들(예컨대, 캐시(108)), 버스들 또는 상호접속부들(예컨대, 버스 또는 상호접속부(112)), 로직(120), 메모리 제어기들(예컨대, 도 5 내지 도 7을 참조하여 논의된 것들), 또는 다른 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(110)는 시스템(100) 및/또는 프로세서(102-1)의 다양한 컴포넌트들 사이에 통신하는데 사용될 수 있다. 또한, 프로세서(102-1)는 하나보다 많은 라우터(110)를 포함할 수 있다. 또한, 다수의 라우터(110)는 프로세서(102-1) 내부의 또는 외부의 다양한 컴포넌트들 사이의 데이터 라우팅을 가능하게 하도록 통신할 수 있다.
캐시(108)는 프로세서(102-1)의 하나 이상의 컴포넌트들, 예컨대 코어들(106)에 의해 이용되는 데이터(예를 들어, 명령어들을 포함함)를 저장할 수 있다. 예를 들어, 캐시(108)는 프로세서(102)의 컴포넌트들에 의한 더 신속한 액세스를 위해 메모리(114)에 저장된 데이터를 로컬 캐싱할 수 있다. 도 1에 도시된 바와 같이, 메모리(114)는 상호접속부(104)를 통해 프로세서들(102)과 통신할 수 있다. 실시예에서, (공유될 수 있는) 캐시(108)는 다양한 레벨들을 가질 수 있는데, 예를 들어 캐시(108)는 중간 레벨 캐시 및/또는 최종 레벨 캐시(LLC: last-level cache)일 수 있다. 또한, 코어들(106) 각각은 레벨 1(L1) 캐시(116-1)(일반적으로 본 명세서에서 "L1 캐시(116)"로 지칭됨)를 포함할 수 있다. 프로세서(102-1)의 다양한 컴포넌트들은, 메모리 제어기나 허브 및/또는 버스(예를 들어, 버스(112))를 통해, 직접적으로 캐시(108)와 통신할 수 있다.
도 1에 도시된 바와 같이, 메모리(114)는 메모리 제어기(120)를 통해 시스템(100)의 다른 컴포넌트들에 연결될 수 있다. 메모리(114)는, 일부 실시예들에서 플래시 메모리(또는 SSD를 포함하는 고체 상태 스토리지 디바이스), PCM, STTRAM, 저항성 랜덤 액세스 메모리, 3D 크로스 포인트 메모리 등과 같은 비휘발성 메모리를 포함할 수 있다. 메모리 제어기(120)가 상호접속부(104)와 메모리(114) 사이에 연결되는 것으로 도시되어 있지만, 메모리 제어기(120)는 시스템(100)의 다른 곳에 위치할 수 있다. 예를 들어, 메모리 제어기(120)는 일부 실시예들에서 프로세서들(102) 중 하나의 프로세서 내에 제공될 수 있다. 또한, 일부 실시예들에서, 시스템(100)은 (도 2를 참조하여 추가로 논의되는 하나 이상의 SSD(130)와 같은) 하나 이상의 NVM 또는 비휘발성 메모리(하나 이상의 고체 상태 스토리지를 포함함) 디바이스에 대한 액세스를 제어하는 로직(예를 들어, 고체 상태 스토리지 제어기 로직(125))을 포함할 수 있으며, 하나 이상의 NVM 디바이스는 일부 실시예들에서 동일한 집적 회로 다이 상에 제공될 수 있다. 또한, 로직(125)이 도 1에서 상호접속부(104)에 직접 연결되는 것으로 도시되어 있지만, 로직(125)은 대안적으로 스토리지 버스/상호접속부(예컨대, 도 2를 참조하여 논의되는 SATA(Serial Advanced Technology Attachment) 버스)를 통해 시스템(100)의 하나 이상의 다른 컴포넌트와 통신할 수 있다(예를 들어, 스토리지 버스는 버스 브리지, 칩셋(예컨대, 도 5 및 도 6을 참조하여 논의됨) 등과 같은 일부 다른 로직을 통해 상호접속부(104)에 연결됨). 부가적으로, 로직(125)은 다양한 실시예들에서 적어도 동일한 집적 회로 디바이스 상에 제공되거나, 또는 (도 1, 도 5 및 도 6을 참조하여 논의된 것들과 같은) 메모리 제어기에 통합될 수 있다.
또한, 로직(125)은 하나 이상의 센서(150)에 의해 검출된 값들 또는 그것의 상태를 나타내는 (예를 들어, 하나 이상의 비트 또는 신호의 형태의) 정보를 수신하기 위해 하나 이상의 센서(150)에 연결될 수 있다. 센서(들)(150)는, 온도, 동작 주파수, 동작 전압, 전력 소모 및/또는 코어간 통신 액티비티(inter-core communication activity) 등과 같이, 시스템/플랫폼의 전력/열 거동에 영향을 미치는 다양한 인자들에서의 변동을 감지하기 위해서, 시스템(100)(또는 예를 들어 도 5 내지 도 7을 포함한 다른 도면들을 참조하여 논의된 것들과 같이 본 명세서에서 논의된 다른 컴퓨팅 시스템들)의 컴포넌트들, 예컨대 코어들(106), 상호접속부들(104 또는 112), 프로세서(102) 외부의 컴포넌트들, SSD, SSD 버스, SATA 버스, 로직(125) 등에 근접 제공될 수 있다.
도 2는 실시예에 따라 SSD를 튜닝하기 위한 하이 레벨 흐름도를 도시한다. 도 2는 SSD의 튜닝을 논의하고 있지만, 동일하거나 유사한 기술들은 또한 임의의 타입의 고체 상태 스토리지 NVM 디바이스에 적용될 수 있다. 도시된 바와 같이, 성능 튜닝 소프트웨어(202)(OS(204) 내에서 구동되는 애플리케이션일 수 있음)는, (예를 들어, 그래픽 사용자 인터페이스(GUI)를 통해) 최종 사용자로부터 그리고/또는 (예를 들어, 하나 이상의 미리 정의된 기준에 기초하여) 자동화된 소프트웨어 애플리케이션으로부터 SSD 성능 튜닝 요청(들)을 수락하여 검증하는 SSD 성능 튜닝 소프트웨어 애플리케이션(206)을 포함한다.
동작(208)에서, (예를 들어 SATA(Serial Advanced Technology Attachment) 드라이버와 같은 스토리지 디바이스 드라이버를 통해) SSD 성능에 대한 튜닝/변경을 개시하기 위해 드라이버 커맨드가 전달된다. 드라이버 커맨드는 SATA 버스를 통해 SATA 제어기 로직(210)(예를 들어, 주변 장치 제어 허브(PCH: Peripheral Control Hub) 또는 다른 하드웨어에 포함됨)으로 전달된다. 실시예에서, SATA 제어기(210)는 도 1의 로직(125)과 동일하거나 유사하다. 다음에, SSD(130)가 커맨드를 수락하고, (내부 SSD 제어기를 SSD에서의 비휘발성 메모리 셀들에 연결하는 버스, 비휘발성 메모리 셀들, 및/또는 SSD의 다른 컴포넌트들의 동작 주파수를 변경하는 것과 같이) SSD에 적용되는 성능 변경을 행한다.
도 3은 실시예에 따라 SSD를 튜닝하기 위한 소프트웨어 컨트롤들을 제공하는 예시적인 GUI를 도시한다. 본 명세서에서 논의된 바와 같이, SSD를 튜닝하는 것은, 예를 들어 SSD 오버클록킹을 인에이블하는 것에 의해 SSD의 성능을 조정하는 것을 지칭한다. 또한, 오버클록킹은 예를 들어 성능을 증가시키기 위해서 (SSD, 그것의 인터페이스/버스, 또는 SSD 제어기 로직(125) 등과 같은) 컴포넌트의 동작 주파수를 통상의/디폴트 동작 주파수를 넘어 증가시키는 것을 일반적으로 지칭한다. 예를 들어, 튜닝은, 열, 전력 및/또는 신뢰성 상태들에서의 변경에 대한 OEM 및/또는 최종 사용자 허용오차에 기초할 수 있다. 도 3이 SSD를 튜닝하기 위한 기술들을 논의하고 있지만, 동일하거나 유사한 기술들은 또한 다른 타입의 고체 상태 스토리지 디바이스들에 적용될 수 있다. 도 3은 일 실시예에서 인텔® 익스트림 튜닝 유틸리티(XTU)를 이용하는 예시적인 구현을 도시한다. 도시된 바와 같이, GUI는 도 1의 로직(125)의 동작 주파수와 같은 SSD 제어기 주파수를 설정하는 것(1), SSD 전력 한계를 설정하는 것(2), 디폴트 및 제안된 SSD 제어기 주파수 및 전력 모드 값들을 관찰하는 것(3), 주어진 기간에 걸쳐 SSD 제어기 주파수의 히스토그램을 관찰하는 것(4), 및/또는 현재의 SSD 제어기 동작 주파수를 관찰하는 것(5)을 허용한다.
또한, 일부 실시예들은, 시스템 또는 OS 리부트 없이 변경을 행하는 능력을 제공하는 것에 의해 고체 상태 스토리지 디바이스들(SSD들을 포함함)에 대한 성능 특성들의 즉각적인 조정을 제공한다. 그것은 소프트웨어 및/또는 하드웨어 통신 및 제어 메커니즘들을 통한 복수의 실시간 튜닝 옵션이 예를 들어 도 2 및 도 3을 참조하여 논의된 바와 같이 동적 튜닝을 관리하는 것을 허용한다. 실시예에서, 구성가능한 옵션들을 검출하고 고체 상태 스토리지 드라이브에 대한 변경을 전달하기 위해 커맨드 인터페이스가 제공된다.
예를 들어, 도 3은 소프트웨어 애플리케이션이 SSD의 성능 특성들을 조정하기 위해 이용될 수 있는 방법을 도시한다. 예시적인 구현이 도 2 및 도 3을 참조하여 논의되어 있지만, 본 발명의 실시예들은 서비스들, 애플리케이션들 및 배경 서비스들의 상이한 조합을 통해 인스턴스화될 수 있다.
따라서, 일부 실시예들은, 디바이스 제어기(예를 들어, 도 1의 로직(125))의 주파수를 튜닝하는 것, (예를 들어 도 1의 상호접속부(104)를 통하는 것을 포함하여 SATA 버스 또는 다른 인터페이스를 통하여 전송될 수 있는) SCT(Smart Command Transport) 커맨드를 통해 제어기 로직 주파수를 스톡 레벨(stock level)을 넘어 동적으로 스케일링하는 것, 스토리지 디바이스 안전 전력 한계에 대한 버스트 전력 인-러시(burst power in-rush)를 가능하게 하는 것(예를 들어, "인-러시"는 데이터 전송의 버스트 동안의 전력 소모의 피크 기간을 지칭함), (예를 들어, SOC(System On Chip)) 전력 소모가 API(Application Program Interface)를 통해 OEM 특정 임계치를 초과하는 것을 가능하게 하는 것, SCT 커맨드를 통해 플래시 주파수를 스톡 레벨을 넘어 동적으로 스케일링함으로써 (예를 들어, NAND 및/또는 NOR, 또는 다른 타입의 NVM) 플래시 메모리 오버클록킹을 인에이블하는 것, 및/또는 (예를 들어, 결정된/할당된 상부/최대 동작 주파수 한계에 의한 고체 상태 스토리지 디바이스 제어기들의 세그먼트화 또는 "비닝(bin-ing)"을 통해) 내부 레지스터들을 사용함으로써 최고 성능 빈들에 대해 고체 상태 스토리지 디바이스 제어기들을 스크리닝하는 것에 의해 고체 상태 스토리지 디바이스 오버클록킹을 인에이블한다. 일반적으로, "빈(bin)"은 결정된/할당된 동작 주파수 정격에 기초하여 SKU(Stock Keeping Unit)가 할당되는 전자 컴포넌트들의 컬렉션을 지칭한다.
또한, 이러한 기술들은, (소프트웨어 및/또는 펌웨어와 같은) 플랫폼 로직이 특정 폼팩터들 및 동작 상태들에서 성능 대 배터리 수명을 밸런싱/변경하기 위해 SSD 성능을 동적으로 수정할 수 있는 "SSD 터보" 피처를 가능하게 하기 위해 이용될 수 있다. 또한, 일부 실시예들은, 추가로 아래에 논의되는 바와 같이, 추가 보호를 제공하기 위해 (플래시 디바이스 및/또는 제어기 로직(125)에 대한 임계 주파수 값들과 같은) SSD 성능의 파라미터들을 튜닝하기 위한 입력 범위에 대한 고정된 경계들, 및 (도 4를 참조하여 논의되는 것과 같은) 복구 방법들을 제공함으로써, 파국적 장애들(catastrophic failures)(예를 들어, 악성 공격들에 의해 야기됨)을 방지한다. 또한, 예를 들어 드라이브를 와이핑하고 그것을 다시 사용가능하게 하는 것에 의해 장애 이후에 드라이브를 재초기화하기 위해 유틸리티가 제공될 수 있다.
도 4는 실시예에 따라 장애로부터 복구하는 방법(400)의 흐름도를 도시한다. 방법(400)은, 예를 들어 SSD의 성능을 튜닝할 때 지나치게 공격적인 튜닝 파라미터들의 선택으로 인한 장애 이후에 안정성을 회복하는데 이용될 수 있다. 도 4는 SSD에 대한 튜닝 기술들을 논의하고 있지만, 동일하거나 유사한 기술들은 또한 다른 타입의 NVM 디바이스들에 적용될 수 있다. 다양한 실시예들에서, 방법(400)의 하나 이상의 동작은 다른 도면들을 참조하여 논의된 하나 이상의 컴포넌트(예를 들어, 로직(125))에 의해 수행될 수 있다.
도 4를 참조하면, 동작(402)에서 플랫폼이 파워 온된 이후에, 동작(404)에서 SSD가 파워 온된다. 동작(406)에서, (예를 들어, 튜닝 또는 오버클록킹 설정들을 디폴트 값들로 복귀시킴으로써) SSD 초기화가 수행된다. 동작(408)에서, BIOS(Basic Input Output System) POST(Power On Self Test)가 수행된다. 동작(410)에서, BIOS는 SSD 테스팅 및/또는 OC(Over-Clocking)를 수행할 기회를 갖는다. 동작(412)은 SSD 동작들이 안정적인지 여부를 판정하고, 안정적이지 않은 경우에는, 시스템은 동작(402)으로 복귀함으로써 리셋된다. 그렇지 않은 경우에는, 방법(400)은 동작(414)에서 (예를 들어, SSD 또는 다른 NVM 디바이스로부터) OS 부트를 계속한다. 대안적으로, 동작(408) 다음에 바로 동작(414)이 뒤따를 수 있다. 동작(416)에서, OS는 준비 상태이고, 동작 중이다(예를 들어, 유휴 상태). 실시예에서, 동작들(418 및/또는 420)은 (일단 동작(416)에서 OS가 동작 중이면) 수행되어, SSD 오버클록킹/튜닝을 튜닝하고, 현재 설정들에서의 SSD 동작들의 안정성을 결정한다. 동작(420)에서 SSD 동작들이 불안정하게 되는 경우, 시스템은 동작(402)으로 복귀함으로써 리셋된다.
다양한 실시예들은 튜닝 또는 오버클록킹을 인보크하도록 SSD들과 통신하기 위해 SCT 및/또는 ATA(Advanced Technology Attachment) 커맨드들을 이용한다. SCT 커맨드는 SSD로 송신되는 SATA 커맨드를 통해 전송될 수 있다. 아래의 표 1은 일부 실시예들에서 이용될 수 있는 SCT 커맨드들(일부 실시예들에서 벤더 특정일 수 있음)을 열거한다. 일 실시예는 NAND 타이밍 값, 최대 제어기 주파수 값 및 축적된 전력 값에 대해 SCT 커맨드들을 이용한다. 실시예에서, SSD 오버클록킹 로크 커맨드(over-clocking lock command)는, 명시적으로 언로킹되지 않는 한, 사용자들이 소프트웨어를 통해 드라이브를 오버클록킹하는 것을 방지하기 위해 이용된다(예를 들어, 악성 코드 또는 일부 사용자들이 해를 끼치는 것을 방지하는 것을 도움). 따라서, 로킹은 튜닝 또는 오버클록킹을 방지하고, 언로킹은 변경을 허용한다. 로킹 커맨드는 소정의 스토리지 디바이스(예컨대, 제어기 로직(125), 펌웨어, SSD 등에서의 메모리, 레지스터, (도 1 또는 도 5-7을 참조하여 논의된 메모리들을 포함하는) 메모리)에서의 로크 상태 비트(lock status bit)의 설정(또는 구현에 따라서는 소거)를 야기시킬 수 있다. 부가적인 보호를 위해, 일부 실시예들은 아래의 이들 항목들에 대해 수락된 값들의 범위를 한정/제한한다.
Figure pct00001
또한, ATA 커맨드들은 (예를 들어, 스토리지 디바이스, 펌웨어 등에서의 ATA 어드레스들로부터) SSD의 모델/일련 번호 및 다른 식별 정보를 판독하는데 이용될 수 있다. 또한, SSD의 온도는 ATA 커맨드를 통하여 (예를 들어, 물리적으로 SSD에 근접하거나, SSD 내에 있거나, 또는 다른 방식으로 SSD에 열 결합될 수 있는 도 1의 센서들(150) 중 하나 이상에 의해) 모니터링될 수 있다.
일부 실시예들은 기존의 SCT 및 ATA 커맨드 프로토콜들을 이용하지만; (예를 들어, 표 1에 제시된 것과 같이) 본 명세서에서 논의된 고유 튜닝 피처들을 위해 새로운 커맨드들이 부가된다. 이용된 대부분의 커맨드들은 SCT 기반 커맨드들이다. 예를 들어, 표 1의 마지막 라인과 관련하여, (예를 들어 SSD 제조자들이 그들의 솔루션들을 개발/테스트하기 위해 이용하는 하드 코딩된 펌웨어를 통하는 것보다는) 실시간으로 그리고 즉각적으로 SSD 성능을 튜닝하는 능력을 관리하기 위해 드라이브 오버클록킹 로크아웃(Drive Over-clocking Lockout) 커맨드(및 표 1에 제시된 6개의 다른 것들)가 생성된다.
또한, 일부 실시예들은, 예를 들어 지능형 소프트웨어가 튜닝 파라미터들을 동적으로 변경하는 피드백 루프들에 대한 입력들로서 원격측정(telemetry)을 위해 ATA 커맨드들을 이용한다. 예를 들어, 성능의 경계를 푸시할 때, 스토리지 디바이스는 가열되고, 온도 데이터를 검색하기 위한 ATA 커맨드들은, 이러한 상황을 검출하고 하나 이상의 튜닝 파라미터를 감소시켜 드라이브를 건강한 동작 상태들에서 유지하는 것을 돕기 위해 이용될 수 있다.
도 4a는 실시예에 따라 시스템에서의 어느 드라이브들 또는 스토리지 디바이스들(예를 들어, SSD들)이 튜닝될 수 있는지를 결정하는 방법(450)의 흐름도를 도시한다. 실시예에서, 방법(450)은, 성능을 튜닝하는 옵션을 소프트웨어 또는 유틸리티들을 통해 사용자에게 노출하기 이전에 수행된다. 다양한 실시예들에서, 방법(400)의 하나 이상의 동작은 다른 도면들을 참조하여 논의된 하나 이상의 컴포넌트(예를 들어, 로직(125))에 의해 수행될 수 있다.
도 4a를 참조하면, 동작(452)에서, 어드레싱가능한 스토리지 디바이스들에 대한 위치들이 결정된다. 동작(454)에서, (동작(452)에서 식별된) 각각의 스토리지 디바이스는 (예를 들어, SCT/ATA 커맨드들 또는 다른 인터페이스를 통해) 고유 커맨드로 질의된다. 동작(456)에서, 디바이스가 동작(454)의 질의에 대해 올바르게 응답하는 경우에는, 동작(458)에서 그 디바이스는 튜닝가능한 것으로서 플래깅된다. 동작(460)에서, 튜닝가능한 드라이브들의 리스트가 (예를 들어, 그래픽 사용자 인터페이스(GUI)에) 디스플레이되고/되거나, 튜닝 커맨드들이 지원 드라이브들로 송신되는 것이 허용된다. 도 4a에 도시된 바와 같이, 디바이스가 동작(456)에서 응답하는데 실패하는 경우에는, 동작(462)은 이 디바이스를 튜닝가능하지 않은 것으로서 플래깅하고, 방법(450)은 동작(460)으로 복귀한다.
도 4b는 실시예에 따른 SSD의 다양한 컴포넌트들의 블록도를 도시한다. 도 4b에 도시된 바와 같이, SSD(130)는 제어기 로직(482)(하나 이상의 프로세서 코어 또는 프로세서(484) 및 메모리 제어기 로직(486)을 포함함), 랜덤 액세스 메모리(RAM)(488), 펌웨어 스토리지(490), 및 하나 이상의 메모리 모듈(492-1 내지 492-n)(NAND, NOR 또는 다른 타입의 비휘발성 메모리를 포함할 수 있음)을 포함한다. 메모리 모듈들(492-1 내지 492-n)은 하나 이상의 메모리 채널 또는 버스를 통해 메모리 제어기 로직(486)에 연결된다. 또한, SSD(130)는 (SATA, PCIe(Peripheral Component Interconnect express) 등의 인터페이스와 같은) 인터페이스를 통해 로직(125)과 통신한다.
또한, 튜닝은 시스템 소프트웨어(예를 들어, 애플리케이션, 유틸리티 등) 또는 시스템 BIOS에 의해 개시될 수 있다. 또한, 튜닝은 (예를 들어, 사용자 GUI를 통해) 수동으로 또는 (예를 들어, 소프트웨어 및/또는 펌웨어를 포함하는 지능형 로직에 의해) 자동으로 개시될 수 있다. 이러한 튜닝을 개시하기 위한 커맨드들은 위의 표 1을 참조하여 논의된 것과 같은 SCT 또는 ATA 프로토콜들을 이용할 수 있다. 예를 들어, OS 내로부터 개시될 때, 커맨드들은 스토리지 디바이스 드라이버(예를 들어 도 1의 메모리(114)에 저장될 수 있음), 시스템 인터페이스, SATA 또는 PCIe 버스를 통해 스토리지 디바이스(예를 들어, SSD(130))에 전달된다. 다음에, 스토리지 디바이스 상의 제어기 로직(482)은 커맨드들을 파싱하고 실행하기 위해 펌웨어 코드를 실행한다.
실시예에서, 제어기 로직(482)은 그것의 기존의 클록에 대해 비율(승수(multiplier)라고도 알려져 있음)을 변경하는 것에 의해 그 자신의 클록/동작 주파수를 변경할 수 있다. 예를 들어, 제어기의 공칭 클록이 33.3㎒이고, 통상적으로 고정 비율이 100㎒ 유효 주파수에 대해 3인 경우, 비율을 4로 변경하는 것은 성능을 가속화할 수 있는 더 높은(예를 들어, 133㎒) 클록 주파수를 제공할 것이다. 유사하게, 메모리 모듈들(492-1 내지 492-n)과 메모리 제어기 로직(786) 사이에 연결된 버스(들) 또는 채널(들) 중 하나 이상의 클록/동작 주파수뿐만 아니라, 메모리 모듈들(492-1 내지 492-n) 중 하나 이상의 동작/클록 주파수는 다양한 실시예들에서 변경될 수 있다. 또한, 비율들을 변경하는 예가 제공되지만, 그 대신에(또는 그에 부가하여) 직접적으로 공칭 클록 주파수를 변경하는 것도 가능할 수 있다. 이러한 경우에, 흐름은 유사할 것이며, 외부 클록 소스의 통신/제어를 선택적으로 포함할 수 있다.
일부 실시예들에 따르면, 이용된 노브들은, (a) 예를 들어 시스템 PLL(Phase Locked Loop) 타이밍으로부터 도출된 제어기 로직(125) 주파수(예를 들어, 약 400㎒ 내지 625㎒); (b) SSD에 연결된 SATA 버스, SSD의 비휘발성 메모리 셀들에 연결되는 SSD의 내부 버스 등을 포함할 수 있는 SSD 버스 주파수(예를 들어, 약 83㎒ 내지 100㎒ 사이에 스위칭함); 및/또는 (c) 전력 모드(예컨대, 로우(low), 통상(typical), 비제약(unconstrained)) 중 하나 이상을 포함할 수 있다.
부가적으로, 일부 실시예들에 따르면, 모니터링되고 있는 값은, 온도, 제어기 로직(125) 주파수, 플래시 메모리 버스 주파수(예를 들어, 제어기 로직(125) 주파수와 동일할 수 있음), 고체 상태 스토리지 디바이스 동작 주파수 및/또는 축적된 전력 중 하나 이상을 포함할 수 있다.
또한, 일부 실시예들은, 예를 들어, 고체 상태 스토리지 디바이스들 성능이 예를 들어 실시간으로, 하나 이상의 (연속적 또는 비연속적) 기간 동안, 그리고/또는 소프트웨어 워크로드 요구, 센서 데이터 및/또는 환경 상태와 같은 다양한 기준들에 기초하여 증가될 수 있는 플랫폼 기반 고체 상태 스토리지 디바이스 "터보" 유사 능력을 제공한다. SSD 터보 피처는 본 명세서에서 논의된 SSD 튜닝 및 오버클록킹 구축 블록들을 함께 넣음으로써 구축될 수 있다. 따라서, 일부 실시예들은, 처음으로, 주파수(들), 전력 소모 및 폐루프 파라미터들의 모니터링을 포함하여, SSD 성능에 대한 동적 변경을 허용하는 프레임워크를 제공한다. 이러한 방식으로, 터보의 일반 원리, 예를 들어 피크 요구를 충족시키기 위해 SSD들의 속도를 높이고, 요구가 감소될 때 (더 낮은 전력 레벨을 이용하여) SSD들의 속도를 낮추는 것이 SSD들에 적용될 수 있다.
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템(500)의 블록도를 도시한다. 컴퓨팅 시스템(500)은 상호접속 네트워크(또는 버스)(504)를 통해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPU들)(502) 또는 프로세서들을 포함할 수 있다. 프로세서들(502)은 범용 프로세서, (컴퓨터 네트워크(503)를 통해 전달된 데이터를 처리하는) 네트워크 프로세서, (셀폰들, 스마트폰들 등에서 사용되는 것들과 같은) 애플리케이션 프로세서, 또는 다른 타입의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 유선(예를 들어, 이더넷, 기가비트, 파이버 등) 또는 무선 네트워크들(예컨대, 셀룰러, 3G(3세대 셀폰 기술 또는 3세대 무선 포맷(UWCC)), 5G, LPE(Low Power Embedded) 등)을 포함하는 다양한 타입의 컴퓨터 네트워크들(503)이 이용될 수 있다. 또한, 프로세서들(502)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 갖는 프로세서들(502)은 동일한 집적 회로(IC) 다이 상에 상이한 타입의 프로세서 코어들을 통합할 수 있다. 또한, 다중 코어 설계를 갖는 프로세서들(502)은 대칭 또는 비대칭 마이크로프로세서들로서 구현될 수 있다.
실시예에서, 프로세서들(502) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 프로세서들(502) 중 하나 이상은 캐시(108) 및/또는 코어들(106) 중 하나 이상을 포함할 수 있다. 또한, 도 1 내지 도 4를 참조하여 논의된 동작들은 시스템(500)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
칩셋(506)도 또한 상호접속 네트워크(504)와 통신할 수 있다. 칩셋(506)은 GMCH(graphics and memory control hub)(508)를 포함할 수 있다. GMCH(508)는 메모리(114)와 통신하는 메모리 제어기(510)(실시예에서 도 1의 메모리 제어기(120)와 동일하거나 유사할 수 있음)를 포함할 수 있다. 메모리(114)는, CPU(502) 또는 컴퓨팅 시스템(500)에 포함된 임의의 다른 디바이스에 의해 실행되는 명령어들의 시퀀스를 포함하는 데이터를 저장할 수 있다. 또한, 시스템(500)은 로직(125)과 SSD(130)(이들은, 다양한 실시예들에서, 도시된 바와 같이 버스(522)를 통해, 로직(125)이 칩셋(506)에 통합되는 경우에 504와 같은 다른 상호접속부들을 통하거나 하여, 시스템(500)에 연결될 수 있음)를 포함한다. 본 발명의 일 실시예에서, 메모리(114)는 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스, 예컨대 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 또는 다른 타입의 스토리지 디바이스를 포함할 수 있다. 하드 디스크, 플래시, PCM, 3D 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리 및 STTRAM과 같은 비휘발성 메모리가 또한 사용될 수 있다. 다수의 CPU 및/또는 다수의 시스템 메모리와 같은 부가적인 디바이스들이 상호접속 네트워크(504)를 통해 통신할 수 있다.
GMCH(508)는 그래픽 가속기(516)와 통신하는 그래픽 인터페이스(514)를 또한 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(514)는 가속화된 그래픽 포트(AGP: accelerated graphics port)를 통해 그래픽 가속기(516)와 통신할 수 있다. 본 발명의 실시예에서, 디스플레이(517)(예컨대, 평면 패널 디스플레이, 터치 스크린 등)는, 예를 들어, 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장된 이미지의 디지털 표현을 디스플레이에 의해 해석되고 디스플레이되는 디스플레이 신호들로 변환하는 신호 변환기를 통해, 그래픽 인터페이스(514)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성된 디스플레이 신호들은, 디스플레이(517)에 의해 해석되고 후속하여 디스플레이 상에 디스플레이되기 이전에, 다양한 제어 디바이스들을 통과할 수 있다.
허브 인터페이스(518)는 GMCH(508) 및 입/출력 제어 허브(ICH)(520)가 통신하는 것을 허용할 수 있다. ICH(520)는 컴퓨팅 시스템(500)과 통신하는 I/O 디바이스들에 대한 인터페이스를 제공할 수 있다. ICH(520)는 주변 장치 브리지(또는 제어기)(524), 예컨대 PCI(peripheral component interconnect) 브리지, USB(universal serial bus) 제어기, 또는 다른 타입의 주변 장치 브리지 또는 제어기를 통해 버스(522)와 통신할 수 있다. 브리지(524)는 CPU(502)와 주변 디바이스들 사이에 데이터 경로를 제공할 수 있다. 다른 타입의 토폴로지들이 이용될 수 있다. 또한, 다수의 버스가 예를 들어 다수의 브리지 또는 제어기를 통해 ICH(520)와 통신할 수 있다. 또한, ICH(520)와 통신하는 다른 주변 장치들은, 본 발명의 다양한 실시예들에서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원(예를 들어, DVI(digital video interface)) 또는 다른 디바이스들을 포함할 수 있다.
버스(522)는 오디오 디바이스(526), 하나 이상의 디스크 드라이브(들)(528), 및 (예를 들어 유선 또는 무선 인터페이스를 통해 컴퓨터 네트워크(503)와 통신하는) 네트워크 인터페이스 디바이스(530)와 통신할 수 있다. 도시된 바와 같이, 네트워크 인터페이스 디바이스(530)는, (예를 들어, IEEE(Institute of Electrical and Electronics Engineers) 802.11 인터페이스(IEEE 802.11a/b/g/n 등을 포함함), 셀룰러 인터페이스, 3G, 5G, LPE 등을 통해) 무선으로 네트워크(503)와 통신하기 위해 안테나(531)에 연결될 수 있다. 다른 디바이스들은 버스(522)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(530)와 같은) 다양한 컴포넌트들은 본 발명의 일부 실시예들에서 GMCH(508)와 통신할 수 있다. 또한, 프로세서(502)와 GMCH(508)는 결합되어 단일의 칩을 형성할 수 있다. 또한, 그래픽 가속기(516)는 본 발명의 다른 실시예들에서 GMCH(508) 내에 포함될 수 있다.
또한, 컴퓨팅 시스템(500)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는, 판독 전용 메모리(ROM), 프로그램가능 ROM(PROM), 소거가능 PROM(EPROM), 전기적 EPROM(EEPROM), 디스크 드라이브(예를 들어, 528), 플로피 디스크, 콤팩트 디스크 ROM(CD-ROM), DVD(digital versatile disk), 플래시 메모리, 광자기 디스크, 또는 (예를 들어, 명령어들을 포함하는) 전자 데이터를 저장할 수 있는 다른 타입의 비휘발성 머신 판독가능 매체 중 하나 이상을 포함할 수 있다.
도 6은 본 발명의 실시예에 따른 점대점(PtP) 구성으로 배열되는 컴퓨팅 시스템(600)을 도시한다. 특히, 도 6은 프로세서들, 메모리 및 입/출력 디바이스들이 다수의 점대점 인터페이스에 의해 상호접속되는 시스템을 도시한다. 도 1 내지 도 5를 참조하여 논의된 동작들은 시스템(600)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 시스템(600)은 수개의 프로세서를 포함할 수 있는데, 명료성을 위해 그 중 2개의 프로세서(602 및 604)만이 도시되어 있다. 프로세서들(602 및 604) 각각은 메모리들(610 및 612)과의 통신을 가능하게 하기 위해 로컬 메모리 제어기 허브(MCH: memory controller hub)(606 및 608)를 포함할 수 있다. 메모리들(610 및/또는 612)은 도 1 및/또는 도 5의 메모리(114)를 참조하여 논의된 것과 같이 다양한 데이터를 저장할 수 있다. 또한, MCH(606 및 608)는 일부 실시예들에서 메모리 제어기(120)를 포함할 수 있다. 또한, 시스템(600)은 로직(125)과 SSD(130)(이들은, 다양한 실시예들에서, 도시된 바와 같이 버스(640/644)를 통해, 로직(125)이 칩셋(620)에 통합되는 경우에 프로세서(들)(602/604) 또는 칩셋(620)에 대한 다른 점대점 접속들을 통하거나 하여, 시스템(600)에 연결될 수 있음)를 포함한다.
실시예에서, 프로세서들(602 및 604)은 도 5를 참조하여 논의된 프로세서들(502) 중 하나일 수 있다. 프로세서들(602 및 604)은 각각 점대점(PtP) 인터페이스 회로들(616 및 618)을 이용하여 PtP 인터페이스(614)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(602 및 604) 각각은 점대점 인터페이스 회로들(626, 628, 630 및 632)을 이용하여 개별적인 PtP 인터페이스들(622 및 624)을 통해 칩셋(620)과 데이터를 교환할 수 있다. 칩셋(620)은, 예를 들어 PtP 인터페이스 회로(637)를 이용하여, 고성능 그래픽 인터페이스(636)를 통해 고성능 그래픽 회로(634)와 데이터를 또한 교환할 수 있다. 도 5를 참조하여 논의된 바와 같이, 그래픽 인터페이스(636)는 일부 실시예들에서 디스플레이 디바이스(예를 들어, 디스플레이(517))에 연결될 수 있다.
도 6에 도시된 바와 같이, 도 1의 캐시(108) 및/또는 코어들(106) 중 하나 이상은 프로세서들(602 및 604) 내에 위치할 수 있다. 그러나, 본 발명의 다른 실시예들은 도 6의 시스템(600) 내의 다른 회로들, 로직 유닛들 또는 디바이스들에 존재할 수 있다. 또한, 본 발명의 다른 실시예들은 도 6에 도시된 수개의 회로, 로직 유닛 또는 디바이스 전체에 걸쳐 분산될 수 있다.
칩셋(620)은 PtP 인터페이스 회로(641)를 이용하여 버스(640)와 통신할 수 있다. 버스(640)는 버스와 통신하는 하나 이상의 디바이스, 예컨대 버스 브리지(642) 및 I/O 디바이스들(643)을 가질 수 있다. 버스(644)를 통해, 버스 브리지(642)는 다른 디바이스들, 예컨대 키보드/마우스(645), 통신 디바이스들(646)(예컨대, 모뎀들, 네트워크 인터페이스 디바이스들, 또는 예를 들어 안테나(531)를 통하는 것을 포함하여, 네트워크 인터페이스 디바이스(530)를 참조하여 논의된 바와 같이, 컴퓨터 네트워크(503)와 통신할 수 있는 다른 통신 디바이스들), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(648)와 통신할 수 있다. 데이터 스토리지 디바이스(648)는 프로세서들(602 및/또는 604)에 의해 실행될 수 있는 코드(649)를 저장할 수 있다.
일부 실시예들에서, 본 명세서에서 논의된 컴포넌트들 중 하나 이상은 SOC(System On Chip) 디바이스로서 구현될 수 있다. 도 7은 실시예에 따른 SOC 패키지의 블록도를 도시한다. 도 7에 도시된 바와 같이, SOC(702)는 하나 이상의 중앙 처리 유닛(CPU) 코어(720), 하나 이상의 그래픽 프로세서 유닛(GPU) 코어(730), 입/출력(I/O) 인터페이스(740) 및 메모리 제어기(742)를 포함한다. SOC 패키지(702)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같이 상호접속부 또는 버스에 연결될 수 있다. 또한, SOC 패키지(702)는 더 많거나 더 적은 컴포넌트들, 예컨대 다른 도면들을 참조하여 본 명세서에서 논의된 것들을 포함할 수 있다. 또한, SOC 패키지(720)의 각각의 컴포넌트는, 예를 들어 본 명세서에서 다른 도면들을 참조하여 논의된 바와 같이 하나 이상의 다른 컴포넌트를 포함할 수 있다. 일 실시예에서, SOC 패키지(702)(및 그것의 컴포넌트들)는, 예를 들어 단일의 반도체 디바이스 상에 패키징되는 하나 이상의 집적 회로(IC) 다이 상에 제공된다.
도 7에 도시된 바와 같이, SOC 패키지(702)는 메모리 제어기(742)를 통해 메모리(760)(다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일할 수 있음)에 연결된다. 실시예에서, 메모리(760)(또는 그것의 일부)는 SOC 패키지(702) 상에 통합될 수 있다.
I/O 인터페이스(740)는, 예를 들어 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호접속부 및/또는 버스를 통해, 하나 이상의 I/O 디바이스(770)에 연결될 수 있다. I/O 디바이스(들)(770)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(예컨대, 카메라 또는 캠코더/비디오 레코더), 터치 스크린, 스피커 등 중의 하나 이상을 포함할 수 있다. 또한, SOC 패키지(702)는 실시예에서 로직(125)을 포함/통합할 수 있다. 대안적으로, 로직(125)은 SOC 패키지(702)의 외부에(즉, 이산 로직으로서) 제공될 수 있다.
다음의 예들은 추가의 실시예들에 관한 것이다. 예 1은 장치를 포함하는데, 이 장치는, 하나 이상의 비휘발성 메모리 디바이스에 대한 액세스를 제어하는 제어기 로직을 포함하고, 제어기 로직은, 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 제어기 로직에 하나 이상의 비휘발성 메모리 디바이스를 연결하는 버스, 및 제어기 로직 중 하나 이상의 동작 주파수에서의 변화를 야기시키고, 제어기 로직은 커맨드에 응답하여 동작 주파수에서의 변경을 야기시킨다. 예 2는 예 1의 장치를 포함하는데, 여기서 하나 이상의 비휘발성 메모리 디바이스는, 고체 상태 스토리지 디바이스, 상변화 메모리, 3D(3-Dimensional) 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리 및 STTRAM(spin torque transfer random access memory) 중 하나 이상을 포함한다. 예 3은 예 1의 장치를 포함하는데, 여기서 커맨드는 SCT(smart command transport) 커맨드를 포함한다. 예 4는 예 1의 장치를 포함하는데, 여기서 커맨드는, 시스템 또는 운영 체제 리부트 없이 변경을 야기시키기 위해 런타임 동안 발행된다. 예 5는 예 1의 장치를 포함하는데, 여기서 제어기 로직은, 로크 커맨드에 응답하여 변경을 야기시키는 것을 억제한다. 예 6은 예 1의 장치를 포함하는데, 여기서 제어기 로직은, 로크 상태 비트의 값에 응답하여 변경을 야기시키는 것을 억제한다. 예 7은 예 1의 장치를 포함하는데, 여기서 제어기 로직은, 하나 이상의 비휘발성 메모리 디바이스와 연관된 불안정한 동작 상태의 검출에 응답하여 시스템 리셋을 야기시킨다. 예 8은 예 1의 장치를 포함하는데, 여기서 커맨드는, 사용자 인터페이스 또는 자동화된 소프트웨어 애플리케이션에 의해 발행된다. 예 9는 예 1의 장치를 포함하는데, 여기서 하나 이상의 비휘발성 메모리 디바이스는 동일한 집적 회로 다이 상에 있다. 예 10은 예 1의 장치를 포함하는데, 여기서 프로세서 코어, 하나 이상의 비휘발성 메모리 디바이스 및 제어기 로직 중 하나 이상은 동일한 집적 회로 다이 상에 있다. 예 11은 예 1의 장치를 포함하는데, 여기서 메모리 제어기가 제어기 로직을 포함한다.
예 12는 방법을 포함하는데, 이 방법은, 제어기 로직을 통한 하나 이상의 비휘발성 메모리 디바이스에 대한 액세스를 제어하는 단계; 및 제어기 로직에서, 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 제어기 로직에 하나 이상의 비휘발성 메모리 디바이스를 연결하는 버스, 및 제어기 로직 중 하나 이상의 동작 주파수에서의 변경을 야기시키는 단계를 포함하고, 제어기 로직은 커맨드에 응답하여 동작 주파수에서의 변경을 야기시킨다. 예 13은 예 12의 방법을 포함하는데, 여기서 하나 이상의 비휘발성 메모리 디바이스는, 고체 상태 스토리지 디바이스, 상변화 메모리, 3D(3-Dimensional) 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리 및 STTRAM(spin torque transfer random access memory) 중 하나 이상을 포함한다. 예 14는 예 12의 방법을 포함하는데, 여기서 커맨드는 SCT(smart command transport) 커맨드를 포함한다. 예 15는 예 12의 방법을 포함하는데, 이 방법은, 시스템 또는 운영 체제 리부트 없이 변경을 야기시키기 위해 런타임 동안 커맨드를 발행하는 단계를 더 포함한다. 예 16은 예 12의 방법을 포함하는데, 이 방법은, 제어기 로직이 로크 커맨드에 응답하여 변경을 야기시키는 것을 억제하는 단계를 더 포함한다. 예 17은 예 12의 방법을 포함하는데, 이 방법은, 제어기 로직이 로크 상태 비트의 값에 응답하여 변경을 야기시키는 것을 억제하는 단계를 더 포함한다. 예 18은 예 12의 방법을 포함하는데, 이 방법은, 제어기 로직이 하나 이상의 비휘발성 메모리 디바이스와 연관된 불안정한 동작 상태의 검출에 응답하여 시스템 리셋을 야기시키는 단계를 더 포함한다. 예 19는 예 12의 방법을 포함하는데, 이 방법은, 사용자 인터페이스 또는 자동화된 소프트웨어 애플리케이션에 의해 커맨드를 발행하는 단계를 더 포함한다.
예 20은 시스템을 포함하는데, 이 시스템은, 하나 이상의 비휘발성 메모리 디바이스; 및 제어기 로직을 통해 하나 이상의 비휘발성 메모리 디바이스에 액세스하는 적어도 하나의 프로세서 코어를 포함하고, 제어기 로직은, 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 제어기 로직에 하나 이상의 비휘발성 메모리 디바이스를 연결하는 버스, 및 제어기 로직 중 하나 이상의 동작 주파수에서의 변경을 야기시키고, 제어기 로직은 커맨드에 응답하여 동작 주파수에서의 변경을 야기시킨다. 예 21은 예 20의 시스템을 포함하는데, 여기서 하나 이상의 비휘발성 메모리 디바이스는, 고체 상태 스토리지 디바이스, 상변화 메모리, 3D(3-Dimensional) 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리 및 STTRAM(spin torque transfer random access memory) 중 하나 이상을 포함한다. 예 22는 예 20의 시스템을 포함하는데, 여기서 커맨드는 SCT(smart command transport) 커맨드를 포함한다. 예 23은 예 20의 시스템을 포함하는데, 여기서 커맨드는, 시스템 또는 운영 체제 리부트 없이 변경을 야기시키기 위해 런타임 동안 발행된다. 예 24는 예 20의 시스템을 포함하는데, 여기서 적어도 하나의 프로세서 코어, 하나 이상의 비휘발성 메모리 디바이스 및 제어기 로직 중 하나 이상은 동일한 집적 회로 다이 상에 있다. 예 25는 예 20의 시스템을 포함하는데, 이 시스템은 하나 이상의 비휘발성 메모리 디바이스에 저장된 데이터를 디스플레이하는 터치 스크린을 더 포함한다.
예 26은 즉각적으로 고체 상태 스토리지 디바이스들에 대한 성능을 조정하는 장치를 포함하는데, 이 장치는, 제어기 로직에 연결된 하나 이상의 비휘발성 메모리 디바이스에 대한 액세스를 제어하는 수단; 및 제어기 로직에서, 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 제어기 로직에 하나 이상의 비휘발성 메모리 디바이스를 연결하는 버스, 및 제어기 로직 중 하나 이상의 동작 주파수에서의 변경을 야기시키는 수단을 포함하고, 제어기 로직은 커맨드에 응답하여 동작 주파수에서의 변경을 야기시킨다. 예 27은 예 26의 장치를 포함하는데, 이 장치는, 시스템 또는 운영 체제 리부트 없이 변경을 야기시키기 위해 런타임 동안 커맨드를 발행하는 수단을 포함한다. 예 28은 예 26의 장치를 포함하는데, 이 장치는, 로크 커맨드에 응답하여 변경을 야기시키는 것을 억제하는 수단을 포함한다. 예 29는 예 26의 장치를 포함하는데, 이 장치는, 로크 상태 비트의 값에 응답하여 변경을 야기시키는 것을 억제하는 수단을 포함한다.
예 30은, 프로세서 상에서 실행될 때, 예 12 내지 예 19 중 어느 하나의 하나 이상의 동작을 수행하도록 프로세서를 구성하는 하나 이상의 명령어를 포함하는 컴퓨터 판독가능 매체를 포함한다.
본 발명의 다양한 실시예들에서, 예를 들어 도 1 내지 도 7을 참조하여 본 명세서에서 논의된 동작들은, 예를 들어 본 명세서에서 논의된 프로세스를 수행하도록 컴퓨터를 프로그래밍하는데 이용되는 명령어들(또는 소프트웨어 절차들)이 저장되어 있는 유형의(tangible)(예를 들어, 비일시적인) 머신 판독가능 또는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예를 들어, 회로), 소프트웨어, 펌웨어, 마이크로코드 또는 이들의 조합으로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다. 머신 판독가능 매체는 도 1 내지 도 7과 관련하여 논의된 것들과 같은 스토리지 디바이스를 포함할 수 있다.
부가적으로, 이러한 유형의 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품으로서 다운로드될 수 있는데, 프로그램은 통신 링크(예를 들어, 버스, 모뎀 또는 네트워크 접속)를 통해 (예컨대 반송파 또는 다른 전파 매체에서의) 데이터 신호들로서 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)로 전송될 수 있다.
본 명세서에서 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 언급은, 이 실시예와 관련하여 설명된 특정 피처, 구조 또는 특성이 적어도 일 구현에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 구문의 출현은 모두가 동일한 실시예를 언급할 수도 있고 언급하지 않을 수도 있다.
또한, 본 설명 및 청구항들에서, "연결된(coupled)" 및 "접속된(connected)"이라는 용어들은 그 파생어들과 함께 이용될 수 있다. 본 발명의 일부 실시예들에서, "접속된"은, 2개 이상의 엘리먼트가 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 이용될 수 있다. "연결된"은, 2개 이상의 엘리먼트가 직접 물리적으로 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "연결된"은, 2개 이상의 엘리먼트가 서로 직접 접촉하지 않을 수 있지만 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
따라서, 본 발명의 실시예들은 구조적 피처들 및/또는 방법론적 동작들에 대한 특정 언어로 설명되었지만, 청구 대상은 설명된 특정 피처들 또는 동작들에 제한되지는 않을 수 있다는 것이 이해되어야 한다. 오히려, 특정 피처들 및 동작들은 청구 대상을 구현하는 예시적인 형태들로서 개시되어 있다.

Claims (25)

  1. 장치로서,
    하나 이상의 비휘발성 메모리 디바이스에 대한 액세스를 제어하는 제어기 로직을 포함하고,
    상기 제어기 로직은, 상기 제어기 로직, 상기 하나 이상의 비휘발성 메모리 디바이스를 상기 제어기 로직에 연결하는 버스, 및 상기 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 중 하나 이상의 동작 주파수에서의 변경을 야기시키고, 상기 제어기 로직은 커맨드에 응답하여 상기 동작 주파수에서의 변경을 야기시키는 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 비휘발성 메모리 디바이스는, 고체 상태 스토리지 디바이스(solid state storage device), 상변화 메모리(phase change memory), 3D(3-Dimensional) 크로스 포인트 메모리(cross point memory), 저항성 랜덤 액세스 메모리(resistive random access memory) 및 STTRAM(spin torque transfer random access memory) 중 하나 이상을 포함하는 장치.
  3. 제1항에 있어서,
    상기 커맨드는 SCT(smart command transport) 커맨드를 포함하는 장치.
  4. 제1항에 있어서,
    상기 커맨드는, 시스템 또는 운영 체제 리부트 없이 상기 변경을 야기시키기 위해 런타임 동안 발행되는 장치.
  5. 제1항에 있어서,
    상기 제어기 로직은, 로크 커맨드(lock command)에 응답하여 상기 변경을 야기시키는 것을 억제하는 장치.
  6. 제1항에 있어서,
    상기 제어기 로직은, 로크 상태 비트(lock status bit)의 값에 응답하여 상기 변경을 야기시키는 것을 억제하는 장치.
  7. 제1항에 있어서,
    상기 제어기 로직은, 상기 하나 이상의 비휘발성 메모리 디바이스와 연관된 불안정한 동작 상태의 검출에 응답하여 시스템 리셋을 야기시키는 장치.
  8. 제1항에 있어서,
    상기 커맨드는, 사용자 인터페이스 또는 자동화된 소프트웨어 애플리케이션에 의해 발행되는 장치.
  9. 제1항에 있어서,
    상기 하나 이상의 비휘발성 메모리 디바이스는 동일한 집적 회로 다이 상에 있는 장치.
  10. 제1항에 있어서,
    메모리 제어기가 상기 제어기 로직을 포함하는 장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 제어기 로직, 상기 하나 이상의 비휘발성 메모리 디바이스, 및 프로세서 코어 중 하나 이상은 동일한 집적 회로 다이 상에 있는 장치.
  12. 방법으로서,
    제어기 로직을 통한 하나 이상의 비휘발성 메모리 디바이스에 대한 액세스를 제어하는 단계; 및
    상기 제어기 로직에서, 상기 제어기 로직, 상기 하나 이상의 비휘발성 메모리 디바이스를 상기 제어기 로직에 연결하는 버스, 및 상기 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 중 하나 이상의 동작 주파수에서의 변경을 야기시키는 단계
    를 포함하고,
    상기 제어기 로직은 커맨드에 응답하여 상기 동작 주파수에서의 변경을 야기시키는 방법.
  13. 제12항에 있어서,
    상기 하나 이상의 비휘발성 메모리 디바이스는, 고체 상태 스토리지 디바이스, 상변화 메모리, 3D(3-Dimensional) 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리 및 STTRAM(spin torque transfer random access memory) 중 하나 이상을 포함하는 방법.
  14. 제12항에 있어서,
    상기 커맨드는 SCT(smart command transport) 커맨드를 포함하는 방법.
  15. 제12항에 있어서,
    시스템 또는 운영 체제 리부트 없이 상기 변경을 야기시키기 위해 런타임 동안 상기 커맨드를 발행하는 단계를 더 포함하는 방법.
  16. 제12항에 있어서,
    상기 제어기 로직이 로크 커맨드에 응답하여 상기 변경을 야기시키는 것을 억제하는 단계를 더 포함하는 방법.
  17. 제12항에 있어서,
    상기 제어기 로직이 로크 상태 비트의 값에 응답하여 상기 변경을 야기시키는 것을 억제하는 단계를 더 포함하는 방법.
  18. 제12항에 있어서,
    상기 제어기 로직이 상기 하나 이상의 비휘발성 메모리 디바이스와 연관된 불안정한 동작 상태의 검출에 응답하여 시스템 리셋을 야기시키는 단계를 더 포함하는 방법.
  19. 제12항에 있어서,
    사용자 인터페이스 또는 자동화된 소프트웨어 애플리케이션에 의해 상기 커맨드를 발행하는 단계를 더 포함하는 방법.
  20. 시스템으로서,
    하나 이상의 비휘발성 메모리 디바이스; 및
    제어기 로직을 통해 상기 하나 이상의 비휘발성 메모리 디바이스에 액세스하는 적어도 하나의 프로세서 코어
    를 포함하고,
    상기 제어기 로직은, 상기 제어기 로직, 상기 하나 이상의 비휘발성 메모리 디바이스를 상기 제어기 로직에 연결하는 버스, 및 상기 하나 이상의 비휘발성 메모리 디바이스 중 하나 이상, 중 하나 이상의 동작 주파수에서의 변경을 야기시키고, 상기 제어기 로직은 커맨드에 응답하여 상기 동작 주파수에서의 변경을 야기시키는 시스템.
  21. 제20항에 있어서,
    상기 하나 이상의 비휘발성 메모리 디바이스는, 고체 상태 스토리지 디바이스, 상변화 메모리, 3D(3-Dimensional) 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리 및 STTRAM(spin torque transfer random access memory) 중 하나 이상을 포함하는 시스템.
  22. 제20항에 있어서,
    상기 커맨드는, 시스템 또는 운영 체제 리부트 없이 상기 변경을 야기시키기 위해 런타임 동안 발행되는 시스템.
  23. 제20항에 있어서,
    상기 제어기 로직, 상기 하나 이상의 비휘발성 메모리 디바이스, 및 상기 적어도 하나의 프로세서 코어 중 하나 이상은 동일한 집적 회로 다이 상에 있는 시스템.
  24. 제12항 내지 제19항 중 어느 한 항에 기재된 방법을 수행하는 수단을 포함하는 장치.
  25. 프로세서 상에서 실행될 때, 제12항 내지 제19항 중 어느 한 항의 하나 이상의 동작을 수행하도록 상기 프로세서를 구성하는 하나 이상의 명령어를 포함하는 컴퓨터 판독가능 매체.
KR1020157028207A 2013-05-31 2014-05-27 고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정 KR101764044B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361829983P 2013-05-31 2013-05-31
US61/829,983 2013-05-31
US13/929,708 US20140359196A1 (en) 2013-05-31 2013-06-27 On-the-fly performance adjustment for solid state storage devices
US13/929,708 2013-06-27
PCT/US2014/039594 WO2014193844A1 (en) 2013-05-31 2014-05-27 On-the-fly performance adjustment for solid state storage devices

Publications (2)

Publication Number Publication Date
KR20150128907A true KR20150128907A (ko) 2015-11-18
KR101764044B1 KR101764044B1 (ko) 2017-08-14

Family

ID=51986487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157028207A KR101764044B1 (ko) 2013-05-31 2014-05-27 고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정

Country Status (8)

Country Link
US (1) US20140359196A1 (ko)
EP (1) EP3005079B1 (ko)
JP (1) JP6160848B2 (ko)
KR (1) KR101764044B1 (ko)
CN (1) CN105164635B (ko)
BR (1) BR112015027470B1 (ko)
RU (1) RU2624563C2 (ko)
WO (1) WO2014193844A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102267041B1 (ko) 2015-06-05 2021-06-22 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US10073659B2 (en) 2015-06-26 2018-09-11 Intel Corporation Power management circuit with per activity weighting and multiple throttle down thresholds
US10198061B2 (en) * 2015-09-01 2019-02-05 Toshiba Memory Corporation Storage and storage system
US9804795B2 (en) 2015-09-09 2017-10-31 Toshiba Memory Corporation Memory system and controller
US10599349B2 (en) * 2015-09-11 2020-03-24 Samsung Electronics Co., Ltd. Method and apparatus of dynamic parallelism for controlling power consumption of SSDs
US10459644B2 (en) * 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US10585608B2 (en) * 2017-03-22 2020-03-10 Oracle International Corporation System and method for securely isolating a system feature
US10585598B2 (en) 2017-09-29 2020-03-10 Hewlett Packard Enterprise Development Lp Modifying accessibility based on memory access patterns
US10402121B2 (en) * 2017-12-21 2019-09-03 Apple Inc. Systems and methods for reducing performance state change latency
JP2020046752A (ja) * 2018-09-14 2020-03-26 キオクシア株式会社 記憶装置及び情報処理システム
US11079945B2 (en) * 2018-09-20 2021-08-03 Ati Technologies Ulc Dynamic configuration of memory timing parameters
KR102678655B1 (ko) 2019-07-05 2024-06-27 에스케이하이닉스 주식회사 메모리 인터페이스, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
CN111580639A (zh) * 2020-05-06 2020-08-25 深圳忆联信息系统有限公司 Ssd自适应负载时钟的调节方法、装置和计算机设备
CN111833797A (zh) * 2020-07-28 2020-10-27 重庆惠科金渝光电科技有限公司 时序控制板、驱动装置和显示装置
KR20230026877A (ko) * 2021-08-18 2023-02-27 에스케이하이닉스 주식회사 컴퓨팅 시스템 및 그 동작 방법
US20230106101A1 (en) * 2021-10-02 2023-04-06 Innogrit Technologies Co., Ltd. Adaptive thermal calibration for throttling prevention
CN116301662B (zh) * 2023-05-12 2023-08-01 合肥联宝信息技术有限公司 一种固态硬盘功耗管理方法及固态硬盘

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2870328B2 (ja) * 1992-11-12 1999-03-17 日本電気株式会社 不揮発性半導体記憶装置
US6185692B1 (en) * 1998-05-12 2001-02-06 International Business Machine Corporation Data processing system and method for dynamically setting bus clock frequency in response to a number of loads
TW522297B (en) * 2000-03-17 2003-03-01 Micro Star Int Co Ltd Automatic over-clock method for CPU
JP4841069B2 (ja) * 2001-07-24 2011-12-21 パナソニック株式会社 記憶装置
JP2005031729A (ja) * 2003-07-07 2005-02-03 Fujitsu Ltd ディスク制御装置、ディスク装置、ディスク制御方法、ディスク制御プログラム
US7206960B2 (en) * 2003-08-22 2007-04-17 Hewlett-Packard Development Company, L.P. Bus clock frequency management based on device load
US7467318B2 (en) * 2003-09-29 2008-12-16 Ati Technologies Ulc Adaptive temperature dependent feedback clock control system and method
US7382366B1 (en) * 2003-10-21 2008-06-03 Nvidia Corporation Method, apparatus, system, and graphical user interface for selecting overclocking parameters of a graphics system
DE20321085U1 (de) * 2003-10-23 2005-12-29 Commissariat à l'Energie Atomique Phasenwechselspeicher, Phasenwechselspeicheranordnung, Phasenwechselspeicherzelle, 2D-Phasenwechselspeicherzellen-Array, 3D-Phasenwechselspeicherzellen-Array und Elektronikbaustein
US7287199B2 (en) * 2004-03-31 2007-10-23 Giga-Byte Technology Co., Ltd. Device capable of detecting BIOS status for clock setting and method thereof
US7779239B2 (en) * 2004-07-28 2010-08-17 Intel Corporation User opt-in processor feature control capability
US20060056233A1 (en) * 2004-09-10 2006-03-16 Parkinson Ward D Using a phase change memory as a replacement for a buffered flash memory
US7584006B2 (en) * 2004-12-20 2009-09-01 Corsair Memory Managing memory modules
US8593470B2 (en) * 2005-02-24 2013-11-26 Ati Technologies Ulc Dynamic memory clock switching circuit and method for adjusting power consumption
US7426592B2 (en) * 2006-03-30 2008-09-16 Inventec Corporation Management function setting method for intelligent platform management interface
US7861113B2 (en) * 2007-03-16 2010-12-28 Dot Hill Systems Corporation Method and apparatus for operating storage controller system in elevated temperature environment
CN102203717A (zh) * 2007-10-05 2011-09-28 帝斯科匹尔公司 固态驱动器优化器
US20090235108A1 (en) * 2008-03-11 2009-09-17 Gold Spencer M Automatic processor overclocking
TW200951812A (en) * 2008-06-03 2009-12-16 Dfi Inc Method and apparatus for changing BIOS parameters via a hot key
WO2009149059A1 (en) * 2008-06-04 2009-12-10 Initio Corporation Ssd with a controller accelerator
CN101676879A (zh) * 2008-09-17 2010-03-24 鸿富锦精密工业(深圳)有限公司 超频能力测试系统及方法
US20100274933A1 (en) * 2009-04-24 2010-10-28 Mediatek Inc. Method and apparatus for reducing memory size and bandwidth
EP2302519B1 (en) * 2009-09-09 2013-01-16 ST-Ericsson SA Dynamic frequency memory control
US8214580B2 (en) * 2009-10-23 2012-07-03 International Business Machines Corporation Solid state drive with adjustable drive life and capacity
CN102063263B (zh) * 2009-11-18 2013-06-26 成都市华为赛门铁克科技有限公司 固态硬盘响应主机读写操作请求的方法、设备及系统
US20120074466A1 (en) * 2010-09-28 2012-03-29 Seagate Technology Llc 3d memory array with vertical transistor
JP5537474B2 (ja) * 2011-03-24 2014-07-02 公益財団法人鉄道総合技術研究所 プログラム及びセンサノードプログラム作成装置
CN102736666B (zh) * 2011-04-12 2016-03-30 群联电子股份有限公司 参考频率设定方法、存储器控制器及闪存储存装置
TWI468946B (zh) * 2011-04-27 2015-01-11 Silicon Motion Inc 用來進行主裝置指揮運作之方法以及記憶裝置及控制器
EP2715510B1 (en) * 2011-05-24 2018-05-02 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision

Also Published As

Publication number Publication date
JP6160848B2 (ja) 2017-07-12
BR112015027470B1 (pt) 2022-07-26
RU2624563C2 (ru) 2017-07-04
BR112015027470A2 (pt) 2017-07-25
EP3005079B1 (en) 2021-11-17
EP3005079A4 (en) 2016-11-30
RU2015146912A (ru) 2017-05-10
CN105164635B (zh) 2019-06-14
KR101764044B1 (ko) 2017-08-14
US20140359196A1 (en) 2014-12-04
CN105164635A (zh) 2015-12-16
JP2016517988A (ja) 2016-06-20
EP3005079A1 (en) 2016-04-13
WO2014193844A1 (en) 2014-12-04

Similar Documents

Publication Publication Date Title
KR101764044B1 (ko) 고체 상태 스토리지 디바이스들에 대한 즉각적인 성능 조정
JP6154071B2 (ja) アクティブなプロセッサに基づく動的電圧及び周波数管理
Kant Data center evolution: A tutorial on state of the art, issues, and challenges
US9189046B2 (en) Performing cross-domain thermal control in a processor
US10331593B2 (en) System and method for arbitration and recovery of SPD interfaces in an information handling system
TW201931142A (zh) 融合式記憶體裝置及其操作方法
US20140136823A1 (en) Enabling A User And/Or Software To Dynamically Control Performance Tuning Of A Processor
US20200348973A1 (en) Performance monitoring and resource management
KR101707096B1 (ko) 일반 호스트 기반 제어기 레이턴시 방법 및 장치
JP6868087B2 (ja) 管理コントローラへの通信チャネルの方法及びシステム
EP2936317A1 (en) In-place change between transient and persistent state for data structures in non-volatile memory
US11922172B2 (en) Configurable reduced memory startup
EP3803663A1 (en) Watchdog timer hierarchy
CN115686558A (zh) 固件更新
TW201327205A (zh) 硬體效能的管理方法及雲端運算系統
US11809875B2 (en) Low-power pre-boot operations using a multiple cores for an information handling system
US11847009B1 (en) Power control for improving foreground application performance in an information handling system
WO2023010265A1 (en) Firmware update technologies
US20240028222A1 (en) Sleep mode using shared memory between two processors of an information handling system
US20240019913A1 (en) Temperature management for an information handling system
US20240028209A1 (en) Distributed region tracking for tiered memory systems

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