KR20180007374A - 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법 - Google Patents

메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법 Download PDF

Info

Publication number
KR20180007374A
KR20180007374A KR1020160088038A KR20160088038A KR20180007374A KR 20180007374 A KR20180007374 A KR 20180007374A KR 1020160088038 A KR1020160088038 A KR 1020160088038A KR 20160088038 A KR20160088038 A KR 20160088038A KR 20180007374 A KR20180007374 A KR 20180007374A
Authority
KR
South Korea
Prior art keywords
training
channel
memory
area
code
Prior art date
Application number
KR1020160088038A
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 삼성전자주식회사
Priority to KR1020160088038A priority Critical patent/KR20180007374A/ko
Priority to US15/489,762 priority patent/US10943183B2/en
Priority to TW106116848A priority patent/TWI750176B/zh
Priority to CN201710565584.0A priority patent/CN107621959B/zh
Publication of KR20180007374A publication Critical patent/KR20180007374A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시 예에 따른 전자 장치는, 데이터를 저장하는 메모리 장치, 그리고 상기 메모리 장치를 워킹 메모리로 사용하는 시스템 온 칩을 포함하되, 상기 시스템 온 칩은 상기 메모리 장치의 제 1 영역에 트레이닝 코드를 로드하고, 로드된 상기 트레이닝 코드를 실행하여 상기 메모리 장치의 제 2 영역에 대한 소프트웨어 트레이닝을 수행한다.

Description

메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법{ELECTRONIC DEVICE PERFORMING SOFTWARE TRAINING ON MEMORY CHANNEL AND MEMORY CHANNEL TRAINING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법에 관한 것이다.
스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 그리고 웨어러블 기기 등과 같은 모바일 장치의 이용이 폭발적으로 증가하고 있다. 이들 모바일 장치의 핵심 구동 프로세서로서 소위 응용 프로세서(Application Processor: 이하, AP)가 사용되고 있다. 더불어, 다양한 기능 블록들(Intellectual Property: 이하, IP)을 포함하는 응용 프로세서(AP)의 메인 메모리 또는 워킹 메모리(Working memory)로 디램과 같은 휘발성 메모리 장치가 사용된다. 고성능 및 고용량의 메모리 요구에 따라, 워킹 메모리의 동작 주파수와 저장 용량은 급격히 증가하는 추세이다.
동작 속도의 증가에 따라 응용 프로세서와 워킹 메모리 예컨대, 디램(DRAM)이 교환하는 데이터의 신뢰성을 보장하는 것이 점점 어려워지고 있다. 데이터 신뢰성의 보장을 위해서는 인터페이스를 통해 전달되는 데이터 또는 신호의 클록 타이밍이나 레퍼런스 전압의 최적화가 필수적이다. 클록 타이밍의 최적화는 클록 신호(또는 스트로브 신호)와 데이터 간의 최적 동기화를 의미한다. 레퍼런스 전압은 데이터의 논리값을 결정하기 위한 기준을 제공한다.
일반적으로 이러한 데이터의 신뢰성을 위해 디램에 대한 트레이닝(Training)이 수행된다. 이러한 트레이닝을 위한 코드의 실행을 통해서 디램 채널의 최적화가 수행될 수 있다. 보다 많은 기능과 높은 신뢰도를 제공하기 위한 트레이닝 코드의 사이즈는 증가하고 있는 추세이다. 하지만, 증가하는 트레이닝 코드를 로드(Load)하기 위한 에스램(SRAM)의 고용량화는 과도한 비용 증가를 초래한다. 또한, 충분한 리소스를 갖는 디램에 트레이닝 코드를 로드(Load)하는 시도는 채널 인터리빙(Channel interleaving)의 장벽에 의해서 차단되고 있는 실정이다.
본 발명의 목적은 메모리의 채널 트레이닝을 효율적으로 수행하는 전자 장치 및 그것의 메모리 트레이닝 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 전자 장치는, 데이터를 저장하는 메모리 장치, 그리고 상기 메모리 장치를 워킹 메모리로 사용하는 시스템 온 칩을 포함하되, 상기 시스템 온 칩은 상기 메모리 장치의 제 1 영역에 트레이닝 코드를 로드하고, 로드된 상기 트레이닝 코드를 실행하여 상기 메모리 장치의 제 2 영역에 대한 소프트웨어 트레이닝을 수행한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 채널 단위로 관리되는 메모리 장치를 워킹 메모리로 구동하는 전자 장치의 소프트웨어 트레이닝 방법은, 상기 메모리 장치의 제 1 채널에 대응하는 제 1 영역에 트레이닝 코드를, 상기 메모리 장치의 제 2 채널에 대응하는 제 2 영역에 트레이닝 데이터를 로드하는 단계, 상기 제 1 영역에 로드된 트레이닝 코드를 실행에 따라 상기 제 2 영역에 저장된 트레이닝 데이터에 접근하는 단계, 상기 제 2 영역으로부터 독출된 상기 트레이닝 데이터를 평가하여 상기 제 2 채널의 접근 파라미터를 결정하는 단계, 그리고 상기 접근 파라미터를 사용하여 상기 제 2 채널의 동작 조건을 설정하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 컴퓨팅 시스템은, 워킹 메모리로 구동되는 메모리 장치, 그리고 상기 메모리 장치에 데이터를 로드하고 패치하며, 복수의 채널들로 연결되는 호스트를 포함하되, 상기 호스트는 상기 복수의 채널들 중 제 1 채널에 대응하는 메모리 영역에 트레이닝 코드를 로드하고, 로드된 상기 트레이닝 코드를 실행하여 제 2 채널에 대한 소프트웨어 트레이닝을 수행한다.
이상과 같은 본 발명의 실시 예에 따르면, 메모리의 채널 트레이닝을 위한 트레이닝 코드를 디램에 로드하여 실행할 수 있다. 따라서, 트레이닝 코드의 사이즈 제약없이 보다 높은 신뢰도의 메모리 채널 트레이닝이 가능하다. 더불어, 고속으로 데이터 전송이 가능한 디램으로부터 패치되는 트레이닝 코드에 의해서 메모리 채널의 트레이닝에 소요되는 시간을 획기적으로 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치(10)를 개략적으로 보여주는 블록도이다.
도 2는 본 발명의 호스트의 구조를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 워킹 메모리(200)의 구조를 예시적으로 보여주는 블록도이다.
도 4a 및 도 4b는 메모리의 소프트웨어 트레이닝의 예를 보여주는 파형도이다.
도 5는 본 발명의 트레이닝 코드(TC)가 로드되는 워킹 메모리의 트레이닝 방법을 간략히 보여주는 순서도이다.
도 6은 도 5의 소프트웨어 트레이닝 절차(S140 단계)를 세부적으로 보여주는 순서도이다.
도 7은 도 6에서 설명된 메모리 컨트롤러(120)의 채널 인터리빙을 해제하는 방법을 보여주는 블록도이다.
도 8은 채널 인터리빙이 해제된 워킹 메모리(200)에 트레이닝 코드(TC)와 트레이닝 데이터를 로드하는 방법을 간략히 보여주는 도면이다.
도 9는 본 발명의 다른 실시 예에 따른 소프트웨어 트레이닝 방법을 보여주는 순서도이다.
도 10은 도 9에서 설명된 실시 예에 따른 트레이닝 코드의 로드 방법을 보여주는 블록도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 소프트웨어 트레이닝을 수행하는 전자 장치(10')를 보여주는 블록도이다.
도 12는 도 11의 호스트(100')의 예시적인 구성을 보여주는 블록도이다.
도 13은 아비터(190)의 동작을 구체적으로 보여주는 블록도이다.
도 14는 아비터(190)를 포함하는 호스트(100)의 소프트웨어 트레이닝 절차를 보여주는 순서도이다.
도 15는 본 발명의 실시 예에 따라 소프트웨어 트레이닝을 통해 생성된 접근 파라미터를 이용하는 방법을 예시적으로 보여주는 순서도이다.
도 16은 본 발명의 실시 예에 따라 소프트웨어 트레이닝을 통해 생성된 접근 파라미터를 이용하는 다른 방법을 보여주는 순서도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 워킹 메모리로서 디램(DRAM)을 한 예로서 기술될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 예를 들면, 워킹 메모리 장치로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등에도 본 발명의 기술적 특징이 적용될 수 있을 것이다. 여기서, 워킹 메모리는 전자 장치에서 처리되는 명령어 또는 데이터를 저장하는 메모리일 수 있다. 더불어, 본 발명에서 사용되는 용어 '트레이닝(Training)'은 최적의 신뢰성을 제공하기 위한 메모리 채널의 레이턴시 또는 신호 레벨을 탐색하는 동작을 의미한다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 전자 장치(10)를 개략적으로 보여주는 블록도이다. 도 1을 참조하면, 전자 장치(10)는 호스트(100)와 워킹 메모리(200)를 포함한다. 호스트(100)와 워킹 메모리(200) 사이에는 신호 및 데이터 교환을 위한 복수의 채널들(310, 320)이 제공된다.
호스트(100)는 사용자의 요청에 따라 다양한 애플리케이션(Application)을 실행할 수 있다. 호스트(100)는 애플리케이션을 수행하기 위해, 워킹 메모리(200)에 애플리케이션을 로드(Load)하고 실행한다. 호스트(100)는 운영 체제(OS)를 구동할 수 있고, 운영 체제(OS) 상에서 다양한 애플리케이션들을 실행할 수 있다. 이러한 동작을 위해 호스트(100)는 워킹 메모리(200)에 데이터를 쓰거나 또는 워킹 메모리(200)에 저장된 데이터를 읽을 수 있다.
호스트(100)는 워킹 메모리(200)를 제어하기 위한 메모리 컨트롤러(120)를 포함할 수 있다. 호스트(100)는 워킹 메모리(200)에 저장된 데이터를 읽기 위해 메모리 컨트롤러(120)에 읽기 요청을 전달할 수 있다. 메모리 컨트롤러(120)는 호스트(100)가 요청한 데이터를 읽기 위해서 워킹 메모리(200)에 접근할 것이다. 호스트(100)는 적어도 하나의 채널(310, 320)을 통하여 워킹 메모리(200)에 연결될 수 있다. 메모리 컨트롤러(120)는 접근 효율을 높이기 위하여 복수의 채널(310, 320)을 이용하여 채널 인터리빙(Channel Interleaving) 방식에 따라 워킹 메모리(200)를 제어할 수 있다.
호스트(100)는 부팅이나 특정 상황에서 워킹 메모리(200)에 대한 트레이닝(Training)을 수행할 수 있다. 트레이닝을 통해서 호스트(100)는 워킹 메모리(200)와의 데이터나 신호 교환의 신뢰성을 높일 수 있다. 예를 들면, 호스트(100)는 트레이닝 데이터(Training Data: TD)를 다양한 조건에서 워킹 메모리(200)에 기입하거나 독출하여 최적의 클록 타이밍이나 레퍼런스 레벨을 결정할 수 있다.
특히, 본 발명의 호스트(100)는 트레이닝을 수행하기 위한 트레이닝 코드(Training Code: 이하, TC)를 워킹 메모리(200)에 로드할 수 있다. 트레이닝 코드(TC)는 실질적으로 트레이닝을 수행하기 위한 실행 코드에 해당한다. 만일, 트레이닝 코드에 오류가 발생하면, 제반 트레이닝 동작은 실패(Failure)하게 될 것이다. 따라서, 데이터나 신호의 신뢰성을 확보하기 위한 트레이닝 코드(TC)의 안정성 확보가 필요하다. 본 발명의 호스트(100)는 워킹 메모리(100)의 제 1 영역에 트레이닝 코드(TC)를 로드하고, 워킹 메모리(200)의 제 2 영역에 트레이닝 데이터(TD)를 로드한다. 그리고 호스트(100)는 제 1 영역으로부터 트레이닝 코드(TC)를 패치하여 실행하고, 제 2 영역에 대한 트레이닝을 수행하여 최적 신뢰도를 갖는 파라미터를 결정할 수 있다. 물론, 제 2 영역에 트레이닝 코드(TC)를 로드하고, 제 1 영역에 대한 트레이닝을 수행할 수 있다. 제 1 영역과 제 2 영역의 메모리 영역의 분할이나 확보 방법은 후술하는 도면들을 통해서 자세히 설명하기로 한다.
메모리 컨트롤러(120)는 호스트(100)의 다양한 마스터 기능 블록(Master IP)의 요청에 따라 워킹 메모리(200)에 접근한다. 메모리 컨트롤러(120)는 예를 들면, 워킹 메모리(200)로의 접근 요청에 따라 데이터(DQ)를 스트로브 신호(DQS)에 동기하여 전달할 수 있다. 또는, 스트로브 신호(DQS)에 동기되어 워킹 메모리(200)로부터 출력되는 데이터(DQ)를 수신할 수 있다. 메모리 컨트롤러(120)는 예를 들면 채널 인터리빙(Channel Interleaving) 방식으로 워킹 메모리(200)에 접근할 수 있다. 채널 인터리빙 방식에 따른 워킹 메모리(200)로의 접근에 따라, 데이터 교환은 채널 단위로 독립적으로 수행될 수 있다. 이러한 채널 인터리빙에 대한 설명은 후술하는 도 3에서 상세히 설명될 것이다.
워킹 메모리(200)는 전자 장치(10)의 메인 메모리로서 구동된다. 워킹 메모리(200)에는 전자 장치(10)의 부팅시에 운영 체제(OS)나 기본 응용 프로그램들이 로드될 것이다. 예를 들면, 호스트(100)의 부팅시에 스토리지 장치(미도시)에 저장된 OS 이미지가 부팅 시퀀스에 의거하여 워킹 메모리(200)에 로드된다. 운영 체제에 의해서 호스트(100)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 워킹 메모리(200)에 로드될 수 있다. 워킹 메모리(200)는 이뿐 아니라, 카메라와 같은 이미지 센서로부터 제공되는 영상 데이터를 저장하는 버퍼 메모리로 사용될 수도 있을 것이다.
워킹 메모리(200)는 바이트 단위 액세스(Byte Access)가 가능한 다이나믹 랜덤 액세스 메모리(DRAM)일 수 있다. 워킹 메모리(200)는 덮어쓰기가 가능한 불휘발성 메모리 장치로 제공될 수도 있다. 예를 들면, 워킹 메모리(200)는 PRAM, MRAM, ReRAM, FRAM, NOR 플래시와 같은 불휘발성 램으로 구성될 수 있다. 워킹 메모리(200)에는 전자 장치(10)의 구동시에 운영 체제(OS), 구동중인 응용 프로그램(Application Program), 업데이트되는 데이터 등이 저장된다. 워킹 메모리(200)는 멀티-칩이 적층되는 멀티칩 패키지 또는 모듈 형태로 제공될 수 있을 것이다. 하지만, 워킹 메모리(200)의 구성 방식은 여기의 게시에 국한되지 않는다.
채널(310, 320)은 호스트(100)와 워킹 메모리(200) 상이에 데이터나 신호의 전송 경로를 제공한다. 채널(310, 320)은 각각 독립적으로 워킹 메모리(200)와 호스트(100)가 데이터를 전송할 수 있는 데이터 경로에 해당한다. 예를 들면, 제 1 채널(310)을 통해서 데이터(DQ) 및 스트로브 신호(DQS)가 전송되는 동안에, 제 2 채널(320)을 통해서 또 다른 데이터(DQ) 및 스트로브 신호(DQS)가 전송될 수 있다. 채널(310, 320)의 구동 및 운영은 메모리 컨트롤러(120)에 의해서 제어될 것이다.
이상에서는 본 발명의 트레이닝 코드(TC)를 로드하는 워킹 메모리(200) 및 그것을 사용하여 워킹 메모리(200)를 트레이닝하는 호스트(100)의 구성에 대해서 간략히 설명되었다. 이러한 구조를 통해서 기존의 호스트(100) 내의 에스램(SRAM) 내에 트레이닝 코드(TC)를 로드하는 방식보다 로드 및 패치 속도가 향상될 수 있다. 더불어, 트레이닝 코드(TC)가 로드되는 채널 또는 메모리 영역은 트레이닝 대상에서 제외함으로써 트레이닝 코드(TC)에 대한 안정성을 확보할 수 있다.
도 2는 본 발명의 호스트의 구조를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 호스트(100)는 시스템 온 칩(SoC)과 스토리지 장치(180)를 포함할 수 있다. 도시되지는 않았지만, 호스트(100)는 액정 표시 장치나 터치 패널과 같은 장치를 더 포함할 수 있을 것이다.
시스템 온 칩(SoC)은 CPU(110), 메모리 컨트롤러(120), GPU(130), 사용자 인터페이스 컨트롤러(140), 스토리지 인터페이스(150), 가속기(160) 등을 포함할 수 있다. 시스템 온 칩(SoC)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 시스템 온 칩(SoC)은 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
CPU(110)는 호스트(100)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. CPU(110)는 워킹 메모리(200)에 로드되는 운영 체제(OS)를 실행할 것이다. CPU(110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 것이다. 특히, CPU(110)는 워킹 메모리(200)에 로드되는 트레이닝 코드(TC)를 패치하여 실행할 것이다. CPU(110)는 트레이닝 코드(TC)의 실행에 따라 요청되는 워킹 메모리(200)의 트레이닝 동작을 수행하도록 메모리 컨트롤러(120)를 제어할 것이다. CPU(110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다.
메모리 컨트롤러(120)는 워킹 메모리(200)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공한다. 메모리 컨트롤러(120)는 CPU(110)나 다른 기능 블록(IP)의 요청에 따라 워킹 메모리(200)를 액세스할 것이다. 예를 들면, 메모리 컨트롤러(120)는 CPU(110)의 쓰기 요청에 따라 데이터를 워킹 메모리(200)에 기입할 수 있다. 또는, 메모리 컨트롤러(120)는 워킹 메모리(200)로부터 데이터를 읽어내어 CPU(100)나 스토리지 인터페이스(150)에 전달할 수 있다. 메모리 컨트롤러(120)는 트레이닝 동작시, CPU(110)의 요청에 따라 채널 인터리빙을 해제하거나 채널 인터리빙의 단위를 조정할 수 있다.
GPU(130)는 CPU(110)의 요청에 따라 다양한 그래픽 연산을 수행한다. 즉, GPU(130)는 처리 요청된 데이터를 디스플레이(미도시)에 적합한 데이터로 변환할 수 있다. GPU(130)는 유사한 연산을 반복해서 처리하는 병렬 처리에 유리한 연산 구조를 가진다. 따라서, 최근에는 GPU(130)는 그래픽 연산뿐만 아니라 고속의 병렬 처리를 요구하는 다양한 연산에 사용될 수 있는 구조로 개발되고 있다.
사용자 인터페이스 컨트롤러(140)는 사용자 인터페이스 장치들(예를 들면, 키보드나 터치 패널, 또는 디스플레이)로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(140)는 CPU(110)의 제어에 따라 디스플레이(미도시)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(140)는 사용자가 요청한 데이터를 표시하도록 디스플레이를 제어할 수 있다. 사용자 인터페이스 컨트롤러(140)는 키보드, 마우스, 터치 패널과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
스토리지 인터페이스(150)는 CPU(110)의 요청에 따라 스토리지 장치(180)를 액세스한다. 즉, 스토리지 인터페이스(150)는 시스템 온 칩(SoC)과 스토리지 장치(180) 사이의 인터페이스를 제공한다. 예를 들면, CPU(110)에 의해서 처리된 데이터가 스토리지 인터페이스(150)를 통해 스토리지 장치(180)에 저장된다. 더불어, 스토리지 장치(180)에 저장된 데이터는 스토리지 인터페이스(150)를 통해 CPU(110)에 제공될 수 있다.
가속기(160)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 기능 블록으로 제공된다. 예를 들면, 가속기(180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(170)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(170)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 데이터 버스(Data bus)는 주로, 워킹 메모리(200)이나 스토리지 장치(180)로의 메모리 접근 경로를 제공할 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(170)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
스토리지 장치(180)는 호스트(100)의 저장 매체(Storage Medium)로서 제공된다. 스토리지 장치(180)는 응용 프로그램들, 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 특히, 스토리지 장치(180)의 특정 영역에는 워킹 메모리(200)를 트레이닝하기 위한 트레이닝 코드(TC)가 저장될 수 있다. 하지만, 트레이닝 코드(TC)는 스토리지 장치(180)가 아닌 다른 비휘발성 메모리에 저장될 수도 있음은 잘 이해될 것이다. 스토리지 장치(180)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 스토리지 장치(180)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 스토리지 장치(180)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다. 본 발명의 다른 실시 예에서는 스토리지 장치(180)는 시스템 온 칩(SoC)의 내부에 구비되는 내장 메모리일 수 있다.
이상의 설명에 따르면, 워킹 메모리(200)의 트레이닝을 위해서 시스템 온 칩(SoC)은 트레이닝 코드(TC)를 워킹 메모리(200)에 로드할 수 있다. 그리고 트레이닝 코드(TC)의 워킹 메모리(200)로의 로드를 위해, 메모리 컨트롤러(120)는 워킹 메모리(200)의 채널 인터리빙 모드를 해제(또는 비활성화)할 수 있다. 또는, 트레이닝 코드(TC)의 워킹 메모리(200)로의 로드를 위해, 메모리 컨트롤러(120)는 워킹 메모리(200)의 채널 인터리빙의 단위 사이즈를 조정할 수도 있다.
도 3은 본 발명의 실시 예에 따른 워킹 메모리(200)의 구조를 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 워킹 메모리(200)는 복수의 채널들(CH0, CH1, …, CHn-1) 단위로 관리되는 복수의 디램 다이들(Die_0, Die_1, Die_2, …, Die_k-1)을 포함할 수 있다.
워킹 메모리(200)는 메모리 컨트롤러(120)에 의해서 채널 인터리빙 방식으로 관리될 수 있다. 예를 들면, 메모리 컨트롤러(120)가 데이터를 워킹 메모리(200)에 기입하는 경우, 쓰기 요청된 데이터는 인터리빙 단위(IU)로 파티셔닝된다. 인터리빙 단위(IU)가 128 바이트(Byte)라 가정하면, 쓰기 요청된 데이터는 128 바이트(Byte) 단위로 분할되고, 미리 정의된 순서에 따라 각각의 채널에 대응하는 메모리 다이(Die)에 기입된다. 예를 들면, 채널 인터리빙의 시퀀스가 'CH0→CH1→CH2→CH3→…→CHn-1'이라 가정하면, 각각의 채널에 128 바이트(Byte)의 분할된 인터리빙 단위(IU)의 데이터가 파이프라인 방식으로 기입될 수 있다. 읽기 동작에서도 동일한 방식으로 채널들이 선택되어 데이터가 출력될 수 있다.
2개의 다이(Die_0, Die_1)가 포함되는 채널(CH0)이 선택되면, 메모리 컨트롤러(120)는 2개의 다이(Die_0, Die_1) 중 어느 하나를 선택하기 위한 칩 선택 신호(CS0, CS1)를 활성화한다. 그리고 스트로브 신호(DQS)와 데이터(DQ)를 전달할 것이다. 이때, 스트로브 신호(DQS)와 데이터(DQ)를 전달하는 신호 라인은 2개의 다이(Die_0, Die_1)에 의해서 공유되며, 칩 선택 신호(CS0, CS1)에 의해서 2개의 다이(Die_0, Die_1) 중 어느 하나가 선택된다.
상술한 채널 인터이빙 구조로 관리되는 워킹 메모리(200)에 트레이닝 코드(TC)를 로드하는 것은 트레이닝 코드(TC)의 안정성을 저하시킬 수 있다. 하지만, 본 발명의 실시 예에 따라, 트레이닝 코드(TC)가 로드되는 시점에서 채널 인터리빙은 해제될 수 있다. 다른 실시 예에서, 채널 인터리빙 단위(IU)의 사이즈가 트레이닝 코드(TC)를 수용할 정도의 사이즈로 조정될 수 있다. 그리고 소프트웨어 트레이닝(S/W Training)은 트레이닝 코드가 저장되지 않은 영역에 대해서만 수행될 것이다. 이러한 소프트웨어 트레이닝 방법에 따라 트레이닝 코드의 안정성을 높이고, 메모리의 트레이닝 신뢰성도 보장될 수 있다.
도 4a 및 도 4b는 메모리의 소프트웨어 트레이닝의 예를 보여주는 파형도이다. 도 4a는 워킹 메모리(200)의 읽기 트레이닝 방법을, 도 4b는 워킹 메모리(200)의 쓰기 트레이닝을 보여주는 파형도 들이다. 좀더 구체적으로, 도 4a는 읽기 동작시의 스트로브 신호(DQS)의 트레이닝을 보여주는 파형도이고, 도 4b는 쓰기 동작시 스트로브 신호(DQS)의 트레이닝을 보여주는 파형도이다.
도 4a를 참조하면, 워킹 메모리(200)의 제 1 영역에 로드된 트레이닝 코드(TC)의 실행에 따라 제 2 영역에 대한 워킹 메모리(200)의 소프트웨어 트레이닝이 실시된다. 여기서, 제 1 영역은 예를 들면 채널(CH0)에 대응하는 메모리들(210)일 수 있다. 그리고 제 2 영역은 트레이닝 코드(TC)가 로드된 채널(CH0) 영역(또는 제 1 영역)을 제외한 메모리들(예를 들면, 220, 230)일 수 있다.
트레이닝 코드(TC)의 실행에 따라, 제 2 영역의 메모리들에 트레이닝 데이터(TD)가 기입되고 독출 동작이 도시된 절차에 따라 진행된다. 트레이닝 코드(TC)의 실행에 의해, 메모리 컨트롤러(120)는 최적 타이밍을 갖는 스트로브 신호(tDQS)를 찾기 위한 트레이닝 동작을 수행할 것이다. 즉, 메모리 컨트롤러(120)는 다양한 지연값(t0, t1, t2, t3)을 갖는 스트로브 신호들(tDQS0, tDQS1, tDQS2, tDQS3)을 사용하여 트레이닝 데이터(D0, D1, D2, D3)를 출력하도록 제 2 영역에 대응하는 메모리 다이들을 제어할 것이다. 그리고 트레이닝 코드(TC)에 의해서 가장 높은 신뢰도를 제공하는 스트로브 신호(DQS)의 타이밍이 선택될 수 있다.
이상에서는 읽기 동작시 스트로브 신호(DQS)의 지연을 다양하게 제공하는 방식으로 트레이닝이 수행되는 예가 설명되었으나 이것은 설명의 편의를 위한 예시에 불과함은 잘 이해될 것이다. 읽기 트레이닝을 위해 워킹 메모리(200)의 클록(CK) 신호나 데이터(DQ)의 조정도 가능하다.
도 4b를 참조하면, 워킹 메모리(200)의 제 1 영역에 로드된 트레이닝 코드(TC)의 실행에 따라 제 2 영역에 대한 워킹 메모리(200)의 쓰기 트레이닝이 실시된다. 여기서, 제 1 영역은 예를 들면 채널(CH0)에 대응하는 메모리들(210)일 수 있다. 그리고 제 2 영역은 트레이닝 코드(TC)가 로드된 채널(CH0) 영역(또는 제 1 영역)을 제외한 메모리들(예를 들면, 220, 230)일 수 있다.
트레이닝 코드(TC)의 실행에 따라, 제 2 영역의 메모리들에 다양한 지연의 스트로브 신호들(tDQS0, tDQS1, tDQS2, tDQS3)을 사용하여 트레이닝 데이터(D0, D1, D2, D3)가 기입되고 독출될 것이다. 독출된 데이터의 신뢰도나 에러율을 검출하여 최적의 스트로브 신호가 선택될 것이다.
이상에서는 소프트웨어 트레이닝의 예로 데이터(DQ) 및 스트로브 신호(DQS)의 최적 타이밍을 검출하기 위한 동작이 예시적으로 설명되었다. 하지만, 워킹 메모리(200)에 대한 소프트웨어 트레이닝은 이뿐 아니라 다양한 신호나 설정에 대해서 수행될 수 있다.
도 5는 본 발명의 트레이닝 코드(TC)가 로드되는 워킹 메모리의 트레이닝 방법을 간략히 보여주는 순서도이다. 도 5를 참조하면, 워킹 메모리(200)의 제 1 영역에 트레이닝 코드(TC)가 로드되고, 트레이닝 코드(TC)의 실행에 의해서 워킹 메모리의 제 2 영역에 대한 소프트웨어 트레이닝이 수행된다.
S110 단계에서, 전자 장치(10)에 대한 부팅이 수행된다. 예를 들면, 전자 장치(10)의 전원 스위치가 턴온되거나, 장치 리셋에 의한 초기화의 수행시에 부팅 동작이 수행될 수 있을 것이다.
S120 단계에서, 가장 기본적으로 전자 장치(10)의 제반 입출력 인터페이스(I/O Interface)에 대한 트레이닝이 수행될 수 있다. 워킹 메모리(200)에 대한 메모리 트레이닝의 이전에, 최소한의 신뢰성을 보장하기 위한 트레이닝 동작들이 이 단계에서 수행될 수 있을 것이다.
S130 단계에서, 워킹 메모리(200)에 대한 하드웨어 트레이닝(H/W training)이 수행된다. 하드웨어 트레이닝은 예를 들면, 워킹 메모리(200)에 미리 정의된 초기값 파라미터로 메모리 컨트롤러(120)를 설정하는 동작일 수 있다. 하드웨어 트레이닝을 통해서 워킹 메모리(200)로의 접근을 위한 최소한의 신뢰성은 획득될 수 있을 것이다. 따라서, 하드웨어 트레이닝(H/W training)은 다른 표현으로 코어스 트레이닝(Coarse training)이라 불리기도 한다.
S140 단계에서, 워킹 메모리(200)에 대한 소프트웨어 트레이닝(S/W training)이 수행된다. 소프트웨어 트레이닝(S/W training)은 하드웨어 트레이닝(H/W training)에 의해서 결정된 파라미터를 보다 미세하게 조정하기 위한 파인 트레이닝(Fine training)에 해당한다. 도 4a 및 도 4b에 도시된 바와 같이, 소프트웨어 트레이닝(S/W training)은 데이터의 타이밍을 최적의 신뢰성을 제공하기 위한 값으로 하드웨어 트레이닝(H/W training)에 의해서 설정된 파라미터를 재조정하기 위한 절차이다. 본 발명의 소프트웨어 트레이닝(S/W training)시 트레이닝 코드(TC)는 트레이닝의 대상인 워킹 메모리(200)에 로드될 수 있다. 즉, 소프트웨어 트레이닝(S/W training)을 수행하기 위한 트레이닝 코드(TC)가 워킹 메모리(200)의 제 1 영역에 로드된다. 트레이닝 코드(TC)의 실행시, 트레이닝 코드(TC)가 로드되지 않은 제 2 영역의 메모리들에 대한 소프트웨어 트레이닝이 수행될 것이다.
S150 단계에서, 소프트웨어 트레이닝(S/W training)의 결과로 확정된 최적화된 동작 파라미터가 스토리지 장치(180)에 저장될 것이다. 스토리지 장치(180)에 저장된 최적화된 동작 파라미터는 이후 부팅 동작시 소프트웨어 트레이닝(S/W training) 절차를 스킵하기 위하여 사용될 수 있을 것이다.
이상의 본 발명의 실시 예에 따른 소프트웨어 트레이닝 방법에 따르면, 트레이닝 코드(TC)는 트레이닝의 대상이 되는 워킹 메모리(200)에 로드될 수 있다. 따라서, 트레이닝 코드(TC)의 사이즈 제한이 제거되어, 다양한 기능과 성능의 소프트웨어 트레이닝이 가능하다. 더불어, 시스템 인터커넥터(170) 또는 버스를 통해서 접근되는 에스램(SRAM)보다 고속의 워킹 메모리(200)에 트레이닝 코드(TC)가 로드됨에 따라, 로드와 패치에 소요되는 시간 단축이 가능하다. 따라서, 워킹 메모리(200)에 대한 소프트웨어 트레이닝의 속도를 높일 수 있다.
도 6은 도 5의 소프트웨어 트레이닝 절차(S140 단계)를 세부적으로 보여주는 순서도이다. 도 6을 참조하면, 채널 인터리빙을 해제(또는 비활성화)하는 방법을 적용하여 트레이닝 코드(TC)를 워킹 메모리(200)에 로드하는 소프트웨어 트레이닝 방법이 설명될 것이다.
S141 단계에서, 소프트웨어 트레이닝 절차(S140 단계)가 시작되면 호스트(100)는 메모리 컨트롤러(120)의 채널 인터리빙 모드를 해제시킨다. 채널 인터리빙 모드의 해제에 따라, 호스트(100)는 특정 데이터를 워킹 메모리(200)의 어느 하나의 채널에 대응하는 영역에 집중적으로 기입할 수 있다. 즉, 호스트(100)는 채널 인터리빙의 해제에 따라 데이터를 파티셔닝(Partitioning)하여 워킹 메모리(200)에 저장하지 않아도 된다.
S143 단계에서, 호스트(100)는 채널 인터리빙의 해제 상태에서 트레이닝 코드(TC)와 트레이닝 데이터(TD)를 워킹 메모리(200)에 로드한다. 호스트(100)는 트레이닝 코드(TC)를 제 1 채널에 대응하는 제 1 영역에 로드한다. 그리고 호스트(100)는 트레이닝 데이터(TD)를 제 2 채널에 대응하는 제 2 영역에 기입할 것이다. 제 1 채널은 복수의 채널들 중 어느 하나의 채널일 수 있다. 그리고 제 1 영역은 제 1 채널을 통해서 접근 가능한 메모리 영역 또는 메모리 다이(Die)일 수 있다. 더불어, 제 2 채널은 복수의 채널들 중 제 1 채널을 제외한 하나 또는 그 이상의 채널일 수 있다. 따라서 제 2 영역은 워킹 메모리(200)의 모든 메모리 영역들 중 제 1 영역을 제외한 메모리 영역 또는 메모리 다이(Die)일 수 있다.
S145 단계에서, 호스트(100)는 제 1 영역에 로드된 트레이닝 코드(TC)를 패치하여 실행할 것이다. 예를 들면, 소프트웨어 트레이닝을 위해 할당된 CPU(110)에서 트레이닝 코드(TC)를 패치하여 실행할 수 있다. 트레이닝 코드(TC)의 실행에 따라 제 2 영역에 대응하는 메모리 영역이나 다이에 대한 트레이닝이 수행된다. 이때, 제 2 영역에 기입된 트레이닝 데이터(TD)가 독출되고, 호스트(100)는 독출된 트레이닝 데이터를 평가하여 최적의 파라미터를 결정할 수 있다.
S147 단계에서, 호스트(100)는 트레이닝 코드(TC)와 트레이닝 데이터(TD)를 워킹 메모리(200)에 다시 로드한다. 호스트(100)는 트레이닝 코드(TC)를 제 2 채널에 대응하는 제 2 영역에 로드한다. 그리고 호스트(100)는 트레이닝 데이터(TD)를 제 1 채널에 대응하는 제 1 영역에 기입할 것이다.
S149 단계에서, 호스트(100)는 제 2 영역에 로드된 트레이닝 코드(TC)를 패치하여 실행할 것이다. 예를 들면, 소프트웨어 트레이닝을 위해 할당된 CPU(110)에서 트레이닝 코드(TC)를 패치하여 실행할 수 있다. 트레이닝 코드(TC)의 실행에 따라 제 1 영역에 대응하는 메모리 영역이나 다이에 대한 트레이닝이 수행된다. 이때, 제 1 영역에 기입된 트레이닝 데이터(TD)가 독출되고, 호스트(100)는 독출된 트레이닝 데이터를 평가하여 제 1 영역에 대응하는 최적의 파라미터를 결정할 수 있다. 상술한 절차에 따라 워킹 메모리(200)에 대한 제반 영역이나 다이(또는, 칩)에 대한 소프트웨어 트레이닝이 완료되면, S140 단계는 종료된다.
이상에서는 채널 인터리빙을 해제하는 방식으로 트레이닝 코드(TC)를 워킹 메모리에 로드하는 방법이 설명되었다. 트레이닝 코드(TC)가 로드되는 영역은 실질적으로 트레이닝에서 제외된다. 따라서, 트레이닝 코드(TC)가 로드된 메모리 영역이나 채널에 대한 트레이닝까지 수행하기 위해서는, 소프트웨어 트레이닝은 적어도 2회 실시되어야 한다.
도 7은 도 6에서 설명된 메모리 컨트롤러(120)의 채널 인터리빙을 해제하는 방법을 보여주는 블록도이다. 도 7을 참조하면, 채널 인터리빙이 해제되기 전의 워킹 메모리(200)의 메모리 맵 (a)와 해제된 후의 메모리 맵 (b)가 도시되어 있다.
채널 인터리빙이 해제되기 전의 메모리 맵 (a)를 참조하면, 인터리빙 단위(Interleaving Unit: 이하, IU)로 워킹 메모리(200)의 데이터가 기입되거나 독출된다. 예를 들면, 데이터를 기입하는 경우에 하나의 데이터는 인터리빙 단위(IU)로 분할되고, 분할된 인터리빙 단위의 데이터가 각각의 채널에 분산되어 기입된다. 예를 들면, 인터리빙 시퀀스가 (CH0→CH1→CH2→CH3→…→CHn-1)이라 가정하면, 각각의 채널에는 분할된 인터리빙 단위(IU)의 분할 데이터가 할당되고 기입될 수 있다. 읽기 동작에서도 동일한 방식으로 채널들이 선택되어 독출된 데이터가 호스트(100)에 전달될 수 있다.
채널 인터리빙이 해제된 후의 메모리 맵 (b)를 참조하면, 인터리빙 단위(IU)는 더 이상 의미가 없어진다. 즉, 쓰기 데이터를 선택된 메모리 영역이나 칩(또는, 다이)에 연속적으로 기입할 수 있다. 여기서 채널(CH0)에 대응하는 영역은 채널(CH0)에 연결된 모든 연속된 메모리 영역(211)을 나타낸다. 따라서, 채널(CH0)에 대응하는 메모리 영역(211)에는 파티셔닝되지 않은 트레이닝 코드(TC)를 로드할 수 있다. 채널들(CH1, CH2, CH3) 각각에 대응하는 메모리 영역들(212, 213, 214) 각각에도 분할되지 않은 트레이닝 코드(TC)의 기입이 가능하다.
도 8은 채널 인터리빙이 해제된 워킹 메모리(200)에 트레이닝 코드(TC)와 트레이닝 데이터를 로드하는 방법을 간략히 보여주는 도면이다. 도 8을 참조하면, 채널 인터리빙이 해제된 워킹 메모리(200)에 2회의 트레이닝 코드(TC)의 로드가 수행될 수 있다. 2회의 트레이닝 코드(TC)의 로드는 각각 워킹 메모리(200)의 서로 다른 영역에서 이루어진다.
먼저, 트레이닝 코드(TC)의 로드 상태 (a)에는 도 6의 S143 단계에 대응하는 방식으로 트레이닝 코드(TC)와 트레이닝 데이터(TD)가 로드될 수 있다. 채널(CH0)에 대응하는 메모리 영역에는 트레이닝 코드(TC)가 로드된다. 그리고 채널들(CH1, CH2, CH3) 각각에 대응하는 메모리 영역들에는 트레이닝 데이터(TD)가 기입될 것이다. 채널(CH0)에 대응하는 메모리 영역의 용량은 트레이닝 코드(TC)가 충분히 수용 가능한 용량으로 제공될 것이다. 상술한 트레이닝 코드(TC)의 로드 상태에서, 호스트(100)는 트레이닝 코드(TC)를 패치 및 실행할 것이다. 그러면, 트레이닝 데이터(TD)가 저장된 채널들(CH1, CH2, CH3) 각각에 대응하는 메모리 영역(또는 칩이나 다이)들에 대한 소프트웨어 트레이닝이 수행될 것이다.
이어서, 트레이닝 코드(TC)의 로드 상태 (b)에는 도 6의 S147 단계에 대응하는 방식으로 트레이닝 코드(TC)와 트레이닝 데이터(TD)가 로드될 수 있다. 예를 들면, 채널(CH3)에 대응하는 메모리 영역에는 트레이닝 코드(TC)가 로드된다. 그리고 채널들(CH0)에 대응하는 메모리 영역들에는 트레이닝 데이터(TD)가 기입될 것이다. 이러한 트레이닝 코드(TC)와 트레이닝 데이터(TD)의 로드는 S143 단계 및 S145 단계에서 트레이닝의 대상이 되지 못한 채널(CH0)의 메모리 영역을 트레이닝하기 위한 설정이다. 상술한 트레이닝 코드(TC)의 로드 상태에서, 호스트(100)는 트레이닝 코드(TC)를 패치 및 실행할 것이다. 그러면, 트레이닝 데이터(TD)가 저장된 채널(CH0)에 대응하는 메모리 영역(또는 칩이나 다이)들에 대한 소프트웨어 트레이닝이 수행될 것이다.
도 9는 본 발명의 다른 실시 예에 따른 소프트웨어 트레이닝 방법을 보여주는 순서도이다. 도 9를 참조하면, 채널 인터리빙의 해제와 같은 절차 없이도 트레이닝 코드를 워킹 메모리(200)에 로드하여 소프트웨어 트레이닝을 수행할 수 있다. 이러한 다른 실시 예에 따른 트레이닝 코드(TC)의 로드 및 실행은 도 5의 S140 단계에서 수행될 것이다.
S142 단계에서, 소프트웨어 트레이닝 절차(S140 단계)가 시작되면 호스트(100)는 채널의 인터리빙 단위(IU)의 크기를 결정한다. 예를 들면, 호스트(100)는 트레이닝 코드(TC)의 사이즈를 참조하여 채널의 인터리빙 단위(IU)의 크기를 결정할 수 있다. 채널 인터리빙 단위(IU)의 디폴트값이 128 바이트(Byte)이고, 트레이닝 코드(TC)의 사이즈가 120메가 바이트(MByte)인 경우를 가정하기로 하자. 그러면, 호스트(100)는 채널의 인터리빙 단위(IU)의 크기를 106배로 증가시킬 수 있을 것이다.
S144 단계에서, 호스트(100)는 결정된 채널의 인터리빙 단위(IU)에 따라 채널 인터리빙의 설정을 변경할 것이다. 즉, 호스트(100)는 하나의 채널 인터리빙 단위(IU)의 사이즈가 트레이닝 코드(TC)를 수용 가능한 정도로 증가시킬 수 있을 것이다.
S146a 단계에서, 호스트(100)는 조정된 채널 인터리빙 단위(IU) 조건에서 트레이닝 코드(TC)와 트레이닝 데이터(TD)를 워킹 메모리(200)에 로드한다. 호스트(100)는 트레이닝 코드(TC)를 제 1 채널에 대응하는 제 1 영역에 로드한다. 그리고 호스트(100)는 트레이닝 데이터(TD)를 제 2 채널에 대응하는 제 2 영역에 로드할 것이다. 여기서, 제 1 채널은 채널 인터리빙을 위해 할당되는 복수의 메모리 영역 중 하나이다. 제 2 채널은 채널 인터리빙을 위해 할당되는 제 1 채널과 다른 채널이다.
S146b 단계에서, 호스트(100)는 제 1 채널의 메모리 영역에 로드된 트레이닝 코드(TC)를 패치하여 실행할 것이다. 트레이닝 코드(TC)의 실행에 따라 제 2 채널의 메모리 영역에 대응하는 메모리 영역이나 다이에 대한 트레이닝이 수행된다. 이때, 제 2 영역에 기입된 트레이닝 데이터(TD)가 호스트(100)로 전달될 것이다. 그러면, 호스트(100)는 독출된 트레이닝 데이터(TD)를 평가하여, 제 2 채널에 대응하는 최적의 접근 파라미터를 결정할 수 있다.
S148a 단계에서, 호스트(100)는 트레이닝 코드(TC)와 트레이닝 데이터(TD)를 워킹 메모리(200)에 다시 로드한다. 이때, 호스트(100)는 트레이닝 코드(TC)를 제 2 채널에 대응하는 제 2 영역에 로드한다. 그리고 호스트(100)는 트레이닝 데이터(TD)를 제 1 채널에 대응하는 제 1 영역에 기입할 것이다.
S148b 단계에서, 호스트(100)는 제 2 채널의 메모리 영역에 로드된 트레이닝 코드(TC)를 패치하여 실행할 것이다. 트레이닝 코드(TC)의 실행에 따라 제 1 채널의 메모리 영역에 대응하는 메모리 영역이나 다이에 대한 트레이닝이 수행된다. 이때, 제 1 영역에 기입된 트레이닝 데이터(TD)가 읽혀지고 호스트(100)로 전달될 것이다. 그러면, 호스트(100)는 독출된 트레이닝 데이터(TD)를 평가하여, 제 1 채널에 대응하는 최적의 접근 파라미터를 결정할 것이다.
상술한 절차에 따라 채널 인터리빙의 해제없이 워킹 메모리(200)에 대한 제반 영역이나 다이(또는 칩)에 대한 소프트웨어 트레이닝이 수행될 수 있다.
도 10은 도 9에서 설명된 실시 예에 따른 트레이닝 코드의 로드 방법을 보여주는 블록도이다. 도 10을 참조하면, 워킹 메모리(200)에 대한 채널 인터리빙의 해제 절차 없이도 트레이닝 코드(TC)는 파티셔닝되지 않고 워킹 메모리(200)에 로드될 수 있다.
디폴트값에 대응하는 채널 인터리빙 단위(IU) 상태에서 메모리 맵 (a)를 참조하면, 인터리빙 단위(IU)는 128 바이트(Byte)라 가정하기로 하자. 그리고 파티셔닝되지 않은 트레이닝 코드(TC)의 크기는 120MByte라 가정하기로 하자. 이러한 상황에서 트레이닝 코드(TC)를 워킹 메모리(200)에 로드하면, 트레이닝 코드(TC)는 128바이트 단위로 분리된다. 그리고 분리된 트레이닝 코드(TC)는 워킹 메모리(200)에 존재하는 모든 메모리 칩(또는, 다이)에 분산될 것이다.
하지만, 트레이닝 코드(TC)의 사이즈를 고려하여 채널 인터리빙 단위(IU)를 조정한 상태인 (b)를 참조하면, 하나의 채널 인터리빙 유닛(IU)에 트레이닝 코드(TC)가 파티셔닝되지 않고 로드될 수 있다. 즉, 조정된 128MByte의 채널 인터리빙 단위(IU)에 120MByte 사이즈의 트레이닝 코드(TC)가 수용될 수 있다. 따라서, 하나의 칩이나 다이 내에 트레이닝 코드(TC)가 모두 저장될 수 있음을 알 수 있다.
이러한 상태에서, 채널 인터리빙의 해제없이 채널(CH0)에 로드된 트레이닝 코드(TC)를 실행하면 나머지 채널들(CH1, CH2, CH3)에 대한 소프트웨어 트레이닝이 가능하다.
도 11은 본 발명의 또 다른 실시 예에 따른 소프트웨어 트레이닝을 수행하는 전자 장치(10')를 보여주는 블록도이다. 도 11을 참조하면, 호스트(100')는 소프트웨어 트레이닝 모드시에 활성화되는 아비터(190)를 포함할 수 있다. 아비터(190)에 의해서 채널 인터리빙 시퀀스에 따라 생성되는 어드레스가 리맵핑된 어드레스(ADD_TR)로 워킹 메모리(200)에 전달될 수 있다.
호스트(100')는 부팅이나 리셋 동작시에 워킹 메모리(200)에 대한 소프트웨어 트레이닝을 수행할 것이다. 이때, 채널 인터리빙 모드로 생성되는 워킹 메모리(200)에 대한 접근 어드레스는 아비터(190)를 통해서 중재될 수 있다. 예를 들면, 채널 인터리빙 모드로 생성되는 어드레스의 특정 비트값을 마스킹하는 방식으로 채널 인터리빙 효과가 제거될 수 있다. 아비터(190)는 어드레스 비트의 특정 비트를 마스킹하는 논리 회로로 간단히 구성될 수 있을 것이다. 하지만, 아비터(190)에 의한 어드레스의 변환 방법은 여기에만 국한되지 않음은 잘 이해될 것이다. 그리고 아비터(190)는 하나의 구성(Element)으로 도시되어 있으나, 아비터(190)는 소프트웨어 또는 알고리즘으로 구현될 수도 있음은 잘 이해될 것이다.
도 12는 도 11의 호스트(100')의 예시적인 구성을 보여주는 블록도이다. 도 12를 참조하면, 호스트(100')는 워킹 메모리(200)로의 접근을 요청하는 복수의 마스터 구성들을 포함할 수 있다. 특히, 복수의 CPU(110) 중에서 어느 하나가 소프트웨어 트레이닝을 위한 워킹 메모리(200)로의 접근 요청을 발행하는 것으로 간주할 수 있다. 아비터(190)는 이러한 CPU(110)의 접근 어드레스를 변환하여 메모리 컨트롤러(120)에 전달할 수 있다. 여기서, 아비터(190)를 제외하면, 호스트(100')의 구성은 도 2의 호스트(100)와 실질적으로 동일하다. 따라서, CPU(110), 메모리 컨트롤러(120), GPU(130), 사용자 인터페이스 컨트롤러(140), 스토리지 인터페이스(150), 가속기(160), 시스템 인터커넥터(170) 등에 대한 설명은 생략하기로 한다.
아비터(190)는 소프트웨어 트레이닝을 수행하는 CPU(110)와 시스템 인터커넥터(170) 사이에 위치할 수 있다. 그리고 소프트웨어 트레이닝 모드시, 아비터(190)의 어드레스 변환 동작이 활성화된다. 트레이닝 코드(TC)나 트레이닝 데이터(TD)를 로드하기 위하여 CPU(110)가 발행하는 어드레스는 아비터(190)에 의해서 변환 어드레스(ADD_TR)로 조정된다. 변환 어드레스(ADD_TR)는 시스템 인터커넥터(170), 메모리 컨트롤러(120)를 경유하여 워킹 메모리(200)에 제공될 것이다.
도 13은 아비터(190)의 동작을 구체적으로 보여주는 블록도이다. 도 13을 참조하면, 아비터(190)는 소프트웨어 트레이닝 모드에서 CPU(110)에서 발행되는 채널 인터리빙을 위한 어드레스(ADD)를 변환 어드레스(ADD_TR)로 리맵핑 또는 재배열할 수 있다.
소프트웨어 트레이닝 모드에서, CPU(110)는 통상의 트레이닝 절차에 따라 스토리지 장치(180)로부터 트레이닝 코드(TC)를 요청할 것이다. 그리고 CPU(110)는 트레이닝 코드(TC)를 워킹 메모리(200)에 로드하기 위한 명령어와 채널 인터리빙 모드의 어드레스(ADD)를 발행할 것이다. 이때 CPU(110)가 발행하는 채널 인터리빙 모드에 해당되는 어드레스(ADD)에 따라 CPU(110)에서 인식하는 워킹 메모리(200)는 메모리 맵(191)과 같다.
아비터(190)는 CPU(110)가 발행하는 채널 인터리빙 모드에 해당되는 어드레스(ADD)를 소프트웨어 트레이닝을 위한 변환 어드레스(ADD_TR)로 재배열한다. 예를 들면, 아비터(190)는 채널 인터리빙 방식으로 생성되는 어드레스(ADD)의 특정 비트를 마스킹(Masking)하는 방식으로 변환 어드레스(ADD_TR)를 생성할 수 있을 것이다. 변환 어드레스(ADD_TR)에 의해서 아비터(190)에서 인식하는 워킹 메모리(200)는 메모리 맵(193)과 같다.
상술한 아비터(190)의 활성화에 의해서 CPU(110)는 채널 인터리빙 모드를 유지한 상태에서 트레이닝 코드(TC)를 워킹 메모리(200)에 로드할 것이다. 하지만, 아비터(190)의 중재에 의해서 트레이닝 코드(TC)는 파티셔닝되지 않고 어느 하나의 채널에 대응하는 메모리 영역에 저장될 수 있다.
도 14는 아비터(190)를 포함하는 호스트(100)의 소프트웨어 트레이닝 절차를 보여주는 순서도이다. 도 14를 참조하면, 소프트웨어 트레이닝 모드에서 어드레스 해싱을 수행하는 아비터(190)가 활성화된다. 그리고 트레이닝 코드(TC)는 파티셔닝되지 않고 어느 하나의 채널에 대응하는 메모리 영역에 로드될 수 있다.
S241 단계에서, CPU(110)는 현재 동작 모드가 소프트웨어 트레이닝(S/W Training) 모드인지를 판단한다. 소프트웨어 트레이닝(S/W Training) 모드로 판단되면, 절차는 아비터(190)를 활성화하기 위한 S242 단계로 이동할 것이다. 하지만, 현재 동작 모드가 소프트웨어 트레이닝(S/W Training) 모드가 아닌 경우에, 절차는 소프트웨어 트레이닝(S/W Training) 모드가 활성화되는 시점을 계속 검출할 것이다.
S242 단계에서, CPU(110)는 트레이닝 코드(TC) 또는 트레이닝 데이터(TD)를 로드하기 위한 워킹 메모리(200)의 어드레스를 조정하기 위한 아비터(190)를 활성화한다. 즉, 아비터(190)의 활성화에 따라 아비터(190)가 수행하는 어드레스 해싱(Address Hashing) 기능이 활성화될 것이다.
S243 단계에서, CPU(110)는 트레이닝 코드(TC)와 트레이닝 데이터(TD)를 워킹 메모리(200)에 로드하기 위한 명령어와 어드레스(ADD)를 발행할 것이다. 아비터(190)의 어드레스 해싱 기능에 의해서 어드레스(ADD)는 변환 어드레스(ADD_TR)로 변환된다. 따라서, 트레이닝 코드(TC)는 파티셔닝되지 않은 상태로 제 1 채널에 대응하는 제 1 영역에 로드될 수 있다. 그리고 트레이닝 데이터(TD)는 제 2 채널에 대응하는 제 2 영역에 로드될 것이다.
S244 단계에서, 호스트(100)는 제 1 채널의 메모리 영역에 로드된 트레이닝 코드(TC)를 패치하여 실행할 것이다. 트레이닝 코드(TC)의 실행에 따라 제 2 채널의 메모리 영역에 대응하는 메모리 영역이나 다이에 대한 트레이닝이 수행된다. 이때, 제 2 영역에 기입된 트레이닝 데이터(TD)가 호스트(100)로 전달될 것이다. 그러면, 호스트(100)는 독출된 트레이닝 데이터(TD)를 평가하여, 제 2 채널에 대응하는 최적의 접근 파라미터를 결정할 수 있다.
S245 단계에서, CPU(110)는 트레이닝 코드(TC)와 트레이닝 데이터(TD)를 S243 단계에서와는 다른 채널에 할당하기 위한 명령어와 어드레스(ADD)를 발행할 것이다. 아비터(190)의 어드레스 해싱 기능에 의해서 어드레스(ADD)는 변환 어드레스(ADD_TR)로 변환된다. 따라서, 트레이닝 코드(TC)는 파티셔닝되지 않은 상태로 제 2 채널에 대응하는 제 2 영역에 로드될 수 있다. 그리고 트레이닝 데이터(TD)는 제 1 채널에 대응하는 제 1 영역에 로드될 것이다.
S246 단계에서, 호스트(100)는 제 2 채널의 메모리 영역에 로드된 트레이닝 코드(TC)를 패치하여 실행할 것이다. 트레이닝 코드(TC)의 실행에 따라 제 1 채널의 메모리 영역에 대응하는 메모리 영역이나 다이에 대한 트레이닝이 수행된다. 이때, 제 1 영역에 기입된 트레이닝 데이터(TD)가 읽혀지고 호스트(100)로 전달될 것이다. 그러면, 호스트(100)는 독출된 트레이닝 데이터(TD)를 평가하여, 제 1 채널에 대응하는 최적의 접근 파라미터를 결정할 것이다.
S247 단계에서, 호스트(100)는 소프트웨어 트레이닝 모드가 완료됨에 따라 아비터(190)의 어드레스 해싱 기능을 해제시킨다. 상술한 절차에 따라 소프트웨어 트레이닝을 위한 트레이닝 코드(TC)를 워킹 메모리(200)에 로드하여 실행할 수 있다.
도 15는 본 발명의 실시 예에 따라 소프트웨어 트레이닝을 통해 생성된 접근 파라미터를 이용하는 방법을 예시적으로 보여주는 순서도이다. 도 15를 참조하면, 소프트웨어 트레이닝의 결과는 추후에 수행되는 부팅 동작에 적용하여 전자 장치(10)의 부팅 속도를 높일 수 있다. 여기서, 소프트웨어 트레이닝을 통해 생성된 접근 파라미터는 스토리지 장치(170)나 호스트(100) 내의 비휘발성 메모리 소자에 저장되어 있는 것으로 가정한다.
S310 단계에서, 전자 장치(10)에 대한 부팅이 수행된다. 예를 들면, 전자 장치(10)의 전원 스위치가 턴온되거나, 리셋에 의해서 초기화의 수행시에 부팅 동작이 수행될 수 있을 것이다.
S320 단계에서, 가장 기본적으로 전자 장치(10)의 제반 입출력 인터페이스(I/O Interface)에 대한 트레이닝이 수행될 수 있다. 워킹 메모리(200)에 대한 트레이닝의 이전에 최소한의 신뢰성을 보장하기 위한 다양한 트레이닝 동작들이 이 단계에서 수행될 수 있을 것이다.
S330 단계에서, 워킹 메모리(200)에 대한 하드웨어 트레이닝(H/W training)이 수행된다. 하드웨어 트레이닝은 예를 들면, 워킹 메모리(200)에 미리 정의된 초기값 파라미터로 메모리 컨트롤러(120)를 설정하는 동작일 수 있다. 하드웨어 트레이닝을 통해서 워킹 메모리(200)로의 접근을 위한 최소한의 신뢰성은 획득될 수 있을 것이다. 따라서, 하드웨어 트레이닝(H/W training)은 다른 표현으로 코어스 트레이닝(Coarse training)이라 불리기도 한다.
S340 단계에서, 전자 장치(10)의 내부에 이전의 소프트웨어 트레이닝을 통해서 생성된 접근 파라미터가 존재하는지 검출된다. 만일, 이전의 소프트웨어 트레이닝을 통해서 생성된 접근 파라미터가 존재하는 경우(Yes 방향), 워킹 메모리(200)에 대한 트레이닝은 종료된다. 반면, 이전의 소프트웨어 트레이닝을 통해서 생성된 접근 파라미터가 존재하지 않는 경우(No 방향), 절차는 S350 단계로 이동한다.
S350 단계에서, 워킹 메모리(200)에 대한 소프트웨어 트레이닝(S/W training)이 수행된다. 소프트웨어 트레이닝(S/W training)은 하드웨어 트레이닝(H/W training)에 의해서 결정된 파라미터를 보다 미세하게 조정하기 위한 파인 트레이닝(Fine training)에 해당한다.
S360 단계에서, 소프트웨어 트레이닝(S/W training)의 결과로 확정된 최적화된 접근 파라미터가 스토리지 장치(180)에 저장될 것이다.
이상의 본 발명의 실시 예에 따르면, 소프트웨어 트레이닝을 통해서 획득된 접근 파라미터는 매 부팅 동작시 소프트웨어 트레이닝의 실행없이 적용될 수 있다. 따라서, 매 부팅 동작시 소프트웨어 트레이닝에 소요되는 시간이나 자원이 절약될 수 있다.
도 16은 본 발명의 실시 예에 따라 소프트웨어 트레이닝을 통해 생성된 접근 파라미터를 이용하는 다른 방법을 보여주는 순서도이다. 도 16을 참조하면, 소프트웨어 트레이닝을 통해 생성된 접근 파라미터를 사용하여 하드웨어 트레이닝과 소프트웨어 트레이닝 절차를 모두 생략할 수 있다. S410 단계, S420 단계, S440 단계, S450 단계, S460 단계는 도 15의 단계들과 실질적으로 동일하므로 이 단계들의 상세한 설명은 생략하기로 한다.
S410 단계와 S420 단계에서, 전자 장치(10)에 대한 부팅 및 입출력 인터페이스(I/O Interface)에 대한 트레이닝이 수행된다.
S430 단계에서, 이전의 소프트웨어 트레이닝을 통해서 생성된 접근 파라미터가 존재하는지 검출된다. 만일, 이전의 소프트웨어 트레이닝을 통해서 생성된 접근 파라미터가 존재하는 경우(Yes 방향), 워킹 메모리(200)에 대한 트레이닝 절차는 종료된다. 반면, 이전의 소프트웨어 트레이닝을 통해서 생성된 접근 파라미터가 존재하지 않는 경우(No 방향), 절차는 S440 단계로 이동한다.
S440 단계에서, 워킹 메모리(200)에 대한 하드웨어 트레이닝(H/W training)이 수행된다. S450 단계에서, 소프트웨어 트레이닝(S/W training)이 수행된다. 그리고 S460 단계에서, 소프트웨어 트레이닝(S/W training)의 결과로 확정된 최적화된 접근 파라미터의 저장이 수행된다.
이상에서는 소프트웨어 트레이닝을 통해서 획득된 접근 파라미터가 전자 장치(10)의 부팅시 하드웨어 트레이닝 및 소프트웨어 트레이닝을 생략할 수 있는 기회를 제공할 수 있다. 따라서, 매 부팅 동작시 트레이닝에 소요되는 시간이나 자원이 절약될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 데이터를 저장하는 메모리 장치; 그리고
    상기 메모리 장치를 워킹 메모리로 사용하는 시스템 온 칩을 포함하되,
    상기 시스템 온 칩은 상기 메모리 장치의 제 1 영역에 트레이닝 코드를 로드하고, 로드된 상기 트레이닝 코드를 실행하여 상기 메모리 장치의 제 2 영역에 대한 소프트웨어 트레이닝을 수행하는 전자 장치.
  2. 제 1 항에 있어서,
    상기 시스템 온 칩은 상기 트레이닝 코드의 실행시 상기 제 2 영역의 접근 파라미터를 테스트하고 조정하기 위한 트레이닝 데이터를 로드하는 전자 장치.
  3. 제 1 항에 있어서,
    상기 시스템 온 칩은 상기 메모리 장치에 대한 채널 인터리빙 모드를 해제한 후에 상기 제 1 영역에 상기 트레이닝 코드를 로드하는 전자 장치.
  4. 제 3 항에 있어서,
    상기 제 1 영역은 상기 메모리 장치의 제 1 채널에 대응하는 메모리 단위에 포함되고, 상기 제 2 영역은 제 2 채널에 대응하는 메모리 단위에 포함되는 전자 장치.
  5. 제 1 항에 있어서,
    상기 시스템 온 칩은 상기 메모리 장치에 대한 채널 인터리빙을 위한 인터리빙 단위의 크기를 조정한 후에 상기 제 1 영역에 상기 트레이닝 코드를 로드하는 전자 장치.
  6. 제 5 항에 있어서,
    상기 채널 인터리빙 단위의 크기는 상기 트레이닝 코드의 용량을 참조하여 조정되는 전자 장치.
  7. 제 6 항에 있어서,
    상기 채널 인터리빙 단위의 크기는 상기 트레이닝 코드의 용량보다 큰 사이즈로 조정되는 전자 장치.
  8. 제 1 항에 있어서,
    상기 시스템 온 칩은, 상기 소프트웨어 트레이닝이 수행되는 동작 모드에서 생성되는 채널 인터리빙 어드레스를 상기 트레이닝 코드가 상기 메모리 장치의 제 1 영역에 연속적으로 저장되도록 맵핑된 변환 어드레스를 생성하는 아비터를 포함하는 전자 장치.
  9. 제 8 항에 있어서,
    상기 아비터는 상기 채널 인터리빙 어드레스의 특정 비트를 마스킹하여 상기 변환 어드레스를 생성하는 전자 장치.
  10. 제 1 항에 있어서,
    상기 시스템 온 칩은 상기 제 2 영역에 상기 트레이닝 코드를 로드하고, 로드된 상기 트레이닝 코드를 실행하여 상기 제 1 영역에 대한 소프트웨어 트레이닝을 추가로 수행하는 전자 장치.
  11. 채널 단위로 관리되는 메모리 장치를 워킹 메모리로 구동하는 전자 장치의 소프트웨어 트레이닝 방법에 있어서:
    상기 메모리 장치의 제 1 채널에 대응하는 제 1 영역에 트레이닝 코드를, 상기 메모리 장치의 제 2 채널에 대응하는 제 2 영역에 트레이닝 데이터를 로드하는 단계;
    상기 제 1 영역에 로드된 트레이닝 코드를 실행에 따라 상기 제 2 영역에 저장된 트레이닝 데이터에 접근하는 단계;
    상기 제 2 영역으로부터 독출된 상기 트레이닝 데이터를 평가하여 상기 제 2 채널의 접근 파라미터를 결정하는 단계; 그리고
    상기 접근 파라미터를 사용하여 상기 제 2 채널의 동작 조건을 설정하는 단계를 포함하는 메모리 장치의 트레이닝 방법.
  12. 제 11 항에 있어서,
    상기 메모리 장치에 대한 채널 인터리빙 모드를 해제하는 단계를 더 포함하는 트레이닝 방법.
  13. 제 11 항에 있어서,
    상기 메모리 장치에 대한 채널 인터리빙 단위의 크기를 조정하는 단계를 더 포함하는 트레이닝 방법.
  14. 제 13 항에 있어서,
    상기 채널 인터리빙의 단위의 크기는 상기 트레이닝 코드의 크기보다 큰 값으로 설정되는 트레이닝 방법.
  15. 제 11 항에 있어서,
    상기 트레이닝 코드가 상기 메모리 장치의 제 1 영역에 연속적으로 저장되도록 상기 메모리 장치에 대한 채널 인터리빙 어드레스를 리맵핑하는 단계를 더 포함하는 트레이닝 방법.
  16. 제 11 항에 있어서,
    상기 제 1 영역에 상기 트레이닝 데이터를, 상기 제 2 영역에 상기 트레이닝 코드를 로드하는 단계;
    상기 제 2 영역에 로드된 트레이닝 코드를 실행하는 단계; 그리고
    상기 트레이닝 코드의 실행에 따라 상기 트레이닝 데이터에 접근하여 상기 제 1 채널의 접근 파라미터를 결정하는 단계를 더 포함하는 트레이닝 방법.
  17. 제 11 항에 있어서,
    상기 접근 파라미터는 데이터 신호(DQ)와 스트로브 신호(DQS) 간의 타이밍 또는 신호 레벨의 기준값을 포함하는 트레이닝 방법.
  18. 워킹 메모리로 구동되는 메모리 장치; 그리고
    상기 메모리 장치에 데이터를 로드하고 패치하며, 복수의 채널들로 연결되는 호스트를 포함하되,
    상기 호스트는 상기 복수의 채널들 중 제 1 채널에 대응하는 메모리 영역에 트레이닝 코드를 로드하고, 로드된 상기 트레이닝 코드를 실행하여 제 2 채널에 대한 소프트웨어 트레이닝을 수행하는 컴퓨팅 시스템.
  19. 제 18 항에 있어서,
    상기 호스트는 상기 메모리 장치에 대한 채널 인터리빙 모드를 해제한 후에 상기 제 1 채널에 대응하는 메모리 영역에 상기 트레이닝 코드를 로드하는 컴퓨팅 시스템.여 제 2 채널에 대한 소프트웨어 트레이닝을 수행하는 컴퓨팅 시스템.
  20. 제 18 항에 있어서,
    상기 호스트는 상기 메모리 장치에 대한 채널 인터리빙 단위의 크기를 조정한 후에 상기 제 1 채널에 대응하는 메모리 영역에 상기 트레이닝 코드를 로드하는 컴퓨팅 시스템.
KR1020160088038A 2016-07-12 2016-07-12 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법 KR20180007374A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160088038A KR20180007374A (ko) 2016-07-12 2016-07-12 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US15/489,762 US10943183B2 (en) 2016-07-12 2017-04-18 Electronics device performing software training on memory channel and memory channel training method thereof
TW106116848A TWI750176B (zh) 2016-07-12 2017-05-22 對記憶體通道執行軟體調訓的電子裝置、其記憶體通道調訓方法及其系統
CN201710565584.0A CN107621959B (zh) 2016-07-12 2017-07-12 电子装置及其软件训练方法、计算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160088038A KR20180007374A (ko) 2016-07-12 2016-07-12 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법

Publications (1)

Publication Number Publication Date
KR20180007374A true KR20180007374A (ko) 2018-01-23

Family

ID=60941170

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160088038A KR20180007374A (ko) 2016-07-12 2016-07-12 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법

Country Status (4)

Country Link
US (1) US10943183B2 (ko)
KR (1) KR20180007374A (ko)
CN (1) CN107621959B (ko)
TW (1) TWI750176B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461113B2 (en) 2019-08-30 2022-10-04 Samsung Electronics Co., Ltd. Training method of memory device and electronic device and electronic system including the same
US11650927B2 (en) 2019-09-19 2023-05-16 SK Hynix Inc. Memory device with a training buffer and method of operating the same

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262751B2 (en) * 2016-09-29 2019-04-16 Intel Corporation Multi-dimensional optimization of electrical parameters for memory training
KR20180118329A (ko) * 2017-04-21 2018-10-31 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법
CN109766133A (zh) * 2018-12-29 2019-05-17 合肥杰发科技有限公司 一种内置嵌入式单元的系统及其初始化方法
DE102020124101A1 (de) 2020-02-04 2021-08-05 Samsung Electronics Co., Ltd. Elektronische vorrichtung mit einer speichervorrichtung und trainingsverfahren
KR20210099675A (ko) * 2020-02-04 2021-08-13 삼성전자주식회사 메모리 장치를 포함하는 전자 장치 및 그것의 트레이닝 방법
CN113496719B (zh) 2020-04-08 2023-06-23 长鑫存储技术有限公司 半导体存储器的训练方法及相关设备
KR20210136480A (ko) * 2020-05-07 2021-11-17 삼성전자주식회사 프로세싱 장치가 실장된 메모리 모듈을 포함하는 컴퓨팅 시스템의 부팅 방법
US11226767B1 (en) * 2020-09-30 2022-01-18 Micron Technology, Inc. Apparatus with access control mechanism and methods for operating the same
US20230205873A1 (en) * 2021-12-29 2023-06-29 Micron Technology, Inc. Training procedure change determination to detect attack
KR20240001870A (ko) 2022-06-28 2024-01-04 삼성전자주식회사 트레이닝 방법 및 이를 사용하는 테스트 장비

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7171598B2 (en) * 2002-05-08 2007-01-30 Credence Systems Corporation Tester system having a multi-purpose memory
US6941438B2 (en) * 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US9292436B2 (en) * 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
KR100903385B1 (ko) 2007-11-02 2009-06-23 주식회사 하이닉스반도체 고속으로 데이터 송신할 수 있는 반도체 메모리 장치
US20090300278A1 (en) 2008-05-29 2009-12-03 Advanced Micro Devices, Inc. Embedded Programmable Component for Memory Device Training
US7974141B2 (en) 2009-01-29 2011-07-05 International Business Machines Corporation Setting memory device VREF in a memory controller and memory device interface in a communication bus
US8819474B2 (en) 2009-04-03 2014-08-26 Intel Corporation Active training of memory command timing
US8037375B2 (en) * 2009-06-30 2011-10-11 Intel Corporation Fast data eye retraining for a memory
US8812892B1 (en) 2009-09-22 2014-08-19 Nvidia Corporation Hardware WCK2CK training engine using meta-EDC sweeping and adjustably accurate voting algorithm for clock phase detection
KR20110100467A (ko) * 2010-03-04 2011-09-14 삼성전자주식회사 메모리 장치를 구비하는 시스템의 데이터 트레이닝 최적화 방법
US8495330B2 (en) 2010-04-02 2013-07-23 Intel Corporation Method and apparatus for interfacing with heterogeneous dual in-line memory modules
US20120284576A1 (en) 2011-05-06 2012-11-08 Housty Oswin E Hardware stimulus engine for memory receive and transmit signals
US8638622B2 (en) 2011-07-06 2014-01-28 Arm Limited Apparatus and method for receiving a differential data strobe signal
US20150143186A1 (en) 2012-07-27 2015-05-21 Hewlett-Packard Developement Company Systems and methods for detecting a dimm seating error
US9250819B2 (en) * 2013-03-04 2016-02-02 Dell Products L.P. Learning machine to optimize random access in a storage system
US9275291B2 (en) * 2013-06-17 2016-03-01 Texifter, LLC System and method of classifier ranking for incorporation into enhanced machine learning
KR20140147218A (ko) 2013-06-19 2014-12-30 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 시스템
US9612648B2 (en) * 2013-08-08 2017-04-04 Qualcomm Incorporated System and method for memory channel interleaving with selective power or performance optimization
US9639495B2 (en) * 2014-06-27 2017-05-02 Advanced Micro Devices, Inc. Integrated controller for training memory physical layer interface

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461113B2 (en) 2019-08-30 2022-10-04 Samsung Electronics Co., Ltd. Training method of memory device and electronic device and electronic system including the same
US11650927B2 (en) 2019-09-19 2023-05-16 SK Hynix Inc. Memory device with a training buffer and method of operating the same

Also Published As

Publication number Publication date
CN107621959A (zh) 2018-01-23
CN107621959B (zh) 2022-05-24
US10943183B2 (en) 2021-03-09
US20180018583A1 (en) 2018-01-18
TW201802671A (zh) 2018-01-16
TWI750176B (zh) 2021-12-21

Similar Documents

Publication Publication Date Title
KR20180007374A (ko) 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US11237728B2 (en) Method for accessing extended memory, device, and system
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US10991446B2 (en) Electronic device performing training on memory device by rank unit and training method thereof
US11650940B2 (en) Storage device including reconfigurable logic and method of operating the storage device
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US20180115496A1 (en) Mechanisms to improve data locality for distributed gpus
US20180107595A1 (en) Apparatuses and methods for an operating system cache in a solid state device
KR20200057397A (ko) 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US10452313B2 (en) Apparatuses and methods for multiple address registers for a solid state device
KR20200081045A (ko) 3차원 적층 메모리 장치 및 그 동작 방법
WO2018113030A1 (en) Technology to implement bifurcated non-volatile memory express driver
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US20220113912A1 (en) Heterogeneous in-storage computation
EP4060505A1 (en) Techniques for near data acceleration for a multi-core architecture
US11385926B2 (en) Application and system fast launch by virtual address area container
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
KR20230156062A (ko) 페이지 재매핑 및 회전들을 통한 어드레스 공간 레이아웃 랜덤화 엔트로피의 증가

Legal Events

Date Code Title Description
E902 Notification of reason for refusal