KR20220055771A - 전자 장치, 차량용 장치 및 데이터 센터 - Google Patents

전자 장치, 차량용 장치 및 데이터 센터 Download PDF

Info

Publication number
KR20220055771A
KR20220055771A KR1020200140208A KR20200140208A KR20220055771A KR 20220055771 A KR20220055771 A KR 20220055771A KR 1020200140208 A KR1020200140208 A KR 1020200140208A KR 20200140208 A KR20200140208 A KR 20200140208A KR 20220055771 A KR20220055771 A KR 20220055771A
Authority
KR
South Korea
Prior art keywords
processor
data
area
cache
main memory
Prior art date
Application number
KR1020200140208A
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 KR1020200140208A priority Critical patent/KR20220055771A/ko
Priority to EP21186882.3A priority patent/EP3992799A1/en
Priority to US17/388,072 priority patent/US20220129383A1/en
Priority to CN202111202249.7A priority patent/CN114490166A/zh
Publication of KR20220055771A publication Critical patent/KR20220055771A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

전자 장치가 제공된다. 전자 장치는 노말(Normal) 동작에 따른 노말 데이터를 저장하는 제1 영역 및 모니터링 데이터를 위한 제2 영역을 포함하는 메인 메모리, 프로세서의 모니터 인에이블 신호에 따라 활성화되어 제2 영역에 액세스하는 제1 캐시 및 프로세서의 노말 동작에 따라 노말 데이터를 로드하는 제2 캐시를 포함한다.

Description

전자 장치, 차량용 장치 및 데이터 센터{ELECTRONIC DEVICE, AUTOMOTIVE DEVICE AND DATA CENTER INCLUDING THE SAME }
본 발명은 전자 장치, 차량용 장치 및 데이터 센터에 관한 것이다.
캐시는 프로세서와 메인 메모리 사이에 존재하여, 메인 메모리에 대한 데이터 쓰루풋(Throughput) 증가를 위한 용도로 사용된다. 메인 메모리에 액세스 중 데이터 변형(corruption)이 발생하게 되면, 프로세서는 변형된 데이터에 기반하여 동작하게 되고, 이는 시스템 동작 중단(System Halt) 또는 오동작(Malfunction)을 발생시킬 수 있다. 시스템 동작 중단 또는 오동작은 일반적인 환경에서 발생하는 불량(Hard Defect), 시스템 동작 도중 시스템 동작 조건 변경 및 외부 환경 변경에 의한 진행성 불량, 파워 변동(Power fluctuation)이나 신호 잡음 등 예측하지 못하는 상황에 의한 불량 등을 발생시킬 수 있다.
최근 시스템 구성과 동작이 복잡해지고 고성능이 요구되면서도 소자별 공정이 미세화되면서 불량의 유형이나 원인에 대해 파악하기가 점점 어려워지고 있다. 이러한 상황을 극복하기 위해 시스템 불량에 대해 미리 감지하고 보다 안정적인 조건으로 시스템을 동작시킬 방법이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는 시스템 불량 발생을 미리 예측하고, 시스템 환경 조건을 조정하여 안정적인 조건으로 동작할 수 있는 전자장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 시스템 불량 발생을 미리 예측하고, 시스템 환경 조건을 조정하여 안정적인 조건으로 동작할 수 있는 차량용 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 시스템 불량 발생을 미리 예측하고, 시스템 환경 조건을 조정하여 안정적인 조건으로 동작할 수 있는 데이터 센터를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 전자장치는, 시스템을 제어하는 프로세서, 노말 동작에 따른 노말 데이터를 저장하는 제1 영역 및 모니터링 데이터를 위한 제2 영역을 포함하는 메인 메모리, 프로세서의 모니터링 인에이블 신호에 따라 활성화되어 제2 영역에 액세스하는 제1 캐시 및 프로세서의 노말 동작에 따라 노말 데이터를 로드하는 제2 캐시를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 차량용 장치는 시스템 초기 설정 정보 및 시스템 환경 정보를 저장하는 레지스터, 시스템 초기 설정 정보 및 시스템 환경 정보에 기초하여 시스템 제어 및 연산 동작을 수행하는 프로세서, 프로세서의 연산 동작에 기초한 노말 데이터를 저장하는 제1 영역 및 기설정된 모니터링 데이터를 저장하는 제2 영역을 포함하는 메인 메모리, 메인 메모리에 액세스하여 모니터링 데이터에 대한 액세스 동작을 하는 제1 캐시 및 메인 메모리에 액세스하여 노말 데이터에 대한 액세스 동작을 하는 제2 캐시를 포함하고, 차량용 장치는 모니터링 데이터에 대한 CRC 코드를 체크하여 시스템 환경을 모니터링할 수 있다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 서버를 포함하는 데이터 센터에 있어서, 스토리지 서버는 시스템 초기 설정 정보 및 시스템 환경 정보를 저장하는 레지스터, 시스템 초기 설정 정보 및 시스템 환경 정보에 기초하여 상기 스토리지 서버의 동작을 제어하는 프로세서, 프로세서의 연산 동작에 기초한 노말 데이터를 저장하는 제1 영역 및 기설정된 모니터링 데이터를 저장하는 제2 영역을 포함하는 메인 메모리 및 메인 메모리에 액세스하여 모니터링 데이터에 대한 액세스 동작을 하는 모니터링 캐시를 포함한다.
도 1은 몇몇 실시예에 따른 전자장치를 도시한 도면이다.
도 2는 몇몇 실시예에 따른 전자장치를 도시한 도면이다.
도 3은 몇몇 실시예에 따른 전자장치를 도시한 도면이다.
도 4는 몇몇 실시예에 따라 캐시 리드 동작을 설명하기 위한 흐름도이다.
도 5은 도 4의 캐시 리드 동작을 설명하기 위한 개념도이다.
도 6은 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 7은 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 8는 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 9은 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 10은 몇몇 실시예에 따른 호스트-스토리지 시스템을 도시한 블록도이다.
도 11는 몇몇 실시예에 따른 도 1의 전자장치가 적용된 시스템을 도시한 도면이다.
도 12는 몇몇 실시예에 따른 전자 장치가 적용된 데이터 센터를 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 전자장치를 도시한 도면이다.
도 1의 전자 장치(1)는 프로세서(10), 레지스터(20), 캐시(30) 및 메인 메모리(40)를 포함할 수 있다.
전자 장치(1)는 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 데이터 센터(Data Center), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device)일 수 있다. 또는 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다.
프로세서(10)는 전자 장치(1)의 시스템의 동작을 전반적으로 제어하고 연산 동작을 수행한다.
레지스터(20)는 프로세서(10)의 연산 동작에 필요한 데이터 또는 명령어를 저장할 수 있다. 레지스터(20)는 프로세서(10)가 연산 수행 중인 값을 저장하는데 사용될 수도 있다. 레지스터(20)는 다양한 실시예에 따라 범용 레지스터, 특수 레지스터, 명령 레지스터, 색인 레지스터, 상수 레지스터, 부동소스점 레지스터, 주소 레지스터, 데이터 레지스터 등으로 구현될 수 있다.
몇몇 실시예에 따라 레지스터(20)는 시스템 초기 설정 정보(BIOS) 및 시스템 환경 정보(System Info.)를 저장할 수 있다.
시스템 초기 설정 정보(BIOS Info)는 시스템 시작시 전자 장치(1)에 포함된 각 구성요소에 로딩되어 각 구성요소의 초기 상태를 설정할 수 있다. 예를 들어 시스템 초기 설정 정보는 BIOS(Basic Input/Output System)와 같이 펌웨어로 구동되어 시스템 구성요소들을 셋팅할 수도 있다. 몇몇 실시예에 따라 시스템 초기 설정 정보는 전자장치(1)의 운영체제 부팅 및 각종 하드웨어 설정에 대한 정보를 포함할 수 있다.
시스템 환경 정보(System Info)는 시스템 동작 중 전자장치(1)에 포함된 각 구성요소의 동작 상태와 관련된 정보를 포함할 수 있다. 몇몇 실시예에 따라 시스템 환경 정보(System Info)는 프로세서(10) 또는 메인 메모리(40)의 온도 상태, 동작 주파수, 동작 전압, FAN 동작, AC 파라미터, 컬럼 간 동작지연 시간(, column to column deay time, tCCD) 등을 포함할 수 있다.
캐시(30)는 명령어나 데이터를 저장할 수 있다. 캐시(30)는 몇몇 실시예에 따라 SRAM(Static RAM)으로 구현될 수 있다. 캐시(30)는 몇몇 실시예에 따라 노말 캐시(35)와 모니터링 캐시(100)를 포함할 수 있다.
노말 캐시(35)는 프로세서(10)의 일반적인 동작에 따른 노말 데이터에 대해 빠른 속도로 동작하는 프로세서(10)와 상대적으로 느린 속도로 동작하는 메인 메모리(40) 간 속도차이를 보완하기 위한 고속 버퍼일 수 있다. 예를 들어, 노말 캐시(35)는 메인 메모리(40)에 있는 데이터를 블록 단위로 로딩하여, 프로세서(10)에게 로딩된 데이터를 워드 단위로 전달할 수 있다.
모니터링 캐시(100)는 프로세서(10)의 모니터링 동작에 따른 모니터링 데이터를 위한 저장 영역일 수 있다. 모니터링 캐시(100)는 일 실시예에 따라 모니터링 데이터를 저장하고 있다가 시스템 초기설정 정보에 기초하여, 메인 메모리(40)의 모니터링 영역으로 로딩될 수 있다. 모니터링 데이터는 기설정된, 알려진(Known) 데이터이며, 몇몇 실시예에 따라 셀 및 입출력 마진(Cell & I/O margin)을 취약하도록 설정된, 알려진 데이터 패턴일 수 있다. 예를 들어, 모니터링 데이터는 SSN 노이즈, 0xA5A5,0x5A5A,0x0101,0xfefe 조합과 같이 노말 데이터 대비 불량발생 확률이 높은 데이터 일 수 있다.
모니터링 캐시(100)는 일 실시예에 따라 노말 캐시(30)와 별개의 하드웨어로 구현되는 캐시일 수도 있고, 다른 실시예에 따라 하나의 캐시에서 시스템 초기 설정 정보에 기초하여 구분(Split)되는 일부 캐시 영역일 수도 있다.
모니터링 캐시(100)는 시스템 초기 설정 정보에 기초하여 활성화 조건에 기초하여 활성화되거나 주기적으로 활성화될 수 있다. 시스템 초기 설정 정보는 예를 들어, 모니터링 캐시(100)의 활성화 조건에 대한 정보를 포함할 수 있다. 활성화 조건은 몇몇 실시예에 따라 프로세서(10) 또는 메인 메모리(40)의 온도, 메인 메모리(40)에 대한 입출력 대역폭(Bandwidth), 메인 메모리(40)에서의 뱅크 오퍼레이션(Bank Operation) 개수, 시스템의 동작 시간(Running Time) 중 적어도 하나에 대한 조건을 포함할 수 있다. 예를 들어 시스템 초기 설정 정보에 따라 전자장치(1)가 초기 설정된 후에 프로세서(10)의 온도가 기설정된 온도 범위를 벗어나거나, 또는 일 예로 입출력 대역폭이 기준 대역폭 범위를 벗어나거나, 또는 뱅크 오퍼레이션 개수가 소정의 개수를 초과하는 등의 상황이 발생하면, 모니터링 캐시(100)가 활성화될 수 있다.
몇몇 실시예에 따라 전자 장치(1)는 모니터링 데이터에 대한 CRC(Cyclic Redundancy Check) 코드를 생성하고, 생성된 CRC 코드를 기저장된 검증값과 비교하여 검증할 수 있다. 검증 결과에 따라 전자 장치(1)는 시스템 동작 환경을 모니터링하고, 필요한 경우 시스템 환경 정보를 조정할 수 있다.
시스템 환경 정보는 몇몇 실시예에 따라 메모리 동작조건으로서의 AC 파라미터, 동작 전압, 동작 클락의 주파수 또는 뱅크 오퍼레이션 정책을 포함할 수 있다. 예를 들어 CRC 코드 검증 결과에 따라 시스템 성능을 낮추는 방향으로 AC 파라미터를 조정하거나, 또는 동작 전압을 높이거나 낮출 수도 있고, 또는 동작 클락의 주파수를 낮출 수도 있다.
몇몇 실시예에 따라 CRC 코드 생성 및 검증결과 체크는 모니터링 캐시(100)에서 수행할 수 있다. 또는 몇몇 실시예에 따라 CRC 코드 생성 및 검증결과 체크는 CRC 모듈에서 수행될 수도 있다. CRC 모듈은 일 실시예에 따라 프로세서(10), 캐시(30) 및 메인 메모리(40)와 별개로 구현될 수도 있고, 다른 실시예에 따라 전자장치(1)에 포함되는 ECC 엔진에 구현될 수도 있다.
메인 메모리(40)는 프로세서(1)에 대한 주기억장치로서, DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 메인 메모리(40)는 SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메인 메모리(40)는 프로세서(10)와 동일한 패키지 내에 구현되는 것도 가능하다.
메인 메모리(40)는 모니터링 영역(41) 및 모니터링 영역(41)을 제외한 나머지 영역으로서, 노말 데이터를 위한 노말 영역(45)을 포함할 수 있다.
모니터링 영역(41)은 모니터링 캐시(1)로부터 로딩된 모니터링 데이터가 라이트(Write)되고, 저장된 모니터링 데이터가 리드(Read)되는, 시스템 모니터링을 위한 전용 영역일 수 있다. 노말 영역(45)은 전자장치(1)의 주기억 장치일 수 있다. 즉, 모니터링 영역(41)은 모니터링 캐시(100)에 의해 데이터 액세스 되는 메모리 영역이고, 노말 영역(45)은 노말 캐시(35)에 의해 데이터 액세스 되는 메모리 영역일 수 있다.
몇몇 실시예에 따라 메인 메모리(40)는 시스템 초기 설정 정보에 기초하여 모니터링 영역(41) 및 노말 영역(45)에 대한 주소 할당을 할 수 있다. 예를 들어 시스템 초기 설정 정보는 모니터링 영역(41)에 대한 기설정된 주소 할당 정보를 포함할 수 있다.
이하 도 2 내지 도 4에서 다양한 실시예에 따른 전자 장치를 도시한다. 설명의 편의를 위해 도 1에서 중복되는 설명은 생략한다.
도 2는 몇몇 실시예에 따른 전자장치를 도시한 도면이다.
전자장치(1)는 프로세서(10), 레지스터(20), 캐시(30) 및 메인 메모리(40)를 포함할 수 있다.
몇몇 실시예에 따라 전자 장치(1)는 시스템이 시작되면, 시스템 초기 설정 정보(21)에 따라 메인 메모리(40)를 모니터링 영역(41)과 노말 영역(45)으로 각각 주소할당할 수 있고, 캐시(3)를 노말 캐시(35)와 모니터링 캐시(100)로 구분할 수 있다. 또한 모니터링 캐시(100)의 활성화 조건을 시스템 설정할 수 있다.
프로세서(10)는 활성화 조건에 따라 모니터링 캐시(100)를 활성화하여 시스템 동작을 모니터링할 수 있다.
몇몇 실시예에 따라 모니터링 캐시(100)는 기설정된 모니터링 데이터가 저장되는 비휘발성 메모리 영역(110), CRC 모듈(151)을 포함할 수 있다.
모니터링 캐시(100)는 활성화 조건에 따라 활성화 되면 비휘발성 메모리 영역(110)에 저장되어 있던 모니터링 데이터를 메인 메모리(40)의 모니터링 영역(41)에 라이트하거나 모니터링 영역(41)에 저장되어 있던 모니터링 데이터를 리드하여 비휘발성 메모리 영역(110)이 아닌 나머지 영역에 로딩할 수 있다. CRC 모듈(151)은 리드 또는 라이트된 모니터링 데이터에 대해 CRC 코드를 생성하고, 기저장된 검증값과 비교할 수 있다. CRC 모듈(151)은 검증결과를 프로세서(10)로 전송할 수 있다.
프로세서(10)는 검증결과에 기초하여 시스템 환경 정보를 조정할 수 있다. 프로세서(10)는 몇몇 실시예에 따라 적어도 하나의 동작 정보만 조정할 수도 있고, 몇몇 실시예에 따라 레지스터 비트로서 레지스터(20)에 저장되어 있던 시스템 환경 정보(25)를 수정하도록 업데이트할 수도 있다.
도 3은 몇몇 실시예에 따른 전자장치를 도시한 도면이다. 도 2와 중복된 설명은 생략한다.
전자장치(1)는 도 2와 달리 모니터링 캐시(100)와 별도로 구현된 CRC모듈(153)을 포함할 수도 있다. 이 경우, CRC 모듈(153)는 모니터링 데이터에 대한 CRC 코드를 생성하고 검증할 수도 있고, 노말 데이터에 대한 CRC 코드를 생성하고 검증할 수도 있다.
도 4는 몇몇 실시예에 따라 캐시 리드 동작을 설명하기 위한 흐름도이다. 도 5은 도 4의 캐시 리드 동작을 설명하기 위한 개념도이다.
캐시(30)는 프로세서(10)와 메인 메모리(40)의 동작속도 차이에 근거한 지역적 특성(Locality) 때문에 타겟 주소의 데이터만 메인 메모리(40)로부터 로딩하는 것이 아니라, 타겟 주소의 인접 주소의 데이터들까지 로딩한다.
도 4 및 도 5를 참고하면, 프로세서(10)가 타겟 주소(X-address)의 데이터에 액세스 하고자 하는 경우(S100), 프로세서는 먼저 캐시(30)에서 해당 데이터가 있는지 확인한다(S101). 만약 캐시(30)에 해당 데이터가 없는 경우, 캐시(30)는 메인 메모리(40)의 타겟 주소(X-address) 및 인접 주소에 접근하여 해당 데이터 및 인접 데이터를 리드한다(S102).
만약 타겟 주소(X-address)의 데이터가 A라고 한다면, 캐시(30)는 메인 메모리(40)로부터 A 뿐만 아니라 타겟 주소의 인접 주소에 저장되어 있는 데이터 B,C,D,E,F,G,H까지 리드하여 캐시(30)로 로딩한다. 즉, 타겟 주소의 인접 주소 데이터는 메모리 셀의 라인(Line), 즉 블럭 단위로 캐시(30)로 로딩된다.
모니터링 캐시(100) 역시 캐시(30)의 지역적 동작 특성에 따라 동작한다. 모니터링 캐시(100)와 메인 메모리(40)의 모니터링 영역(41) 간에 모니터링 데이터가 캐시의 지역적 동작 특성에 따라 리드 또는 라이트되면, 전자 장치(1)는 이러한 액세스 과정에서 시스템의 불안정한 상황을 검출할 가능성이 높아진다.
모니터링 데이터는 불량을 일으킬 가능성이 높은 데이터 패턴으로 설정되어 기저장된 데이터이기 때문에, 모니터링 데이터를 지역적 동작 특성에 따라 캐시에 라인 필(Line Fill)하여 CRC코드를 검증하면, 소정의 환경에서 메인 메모리 외 다른 구성요소의 불안정한 상태에 기인할 수 있는 진행성 불량 또는 원인이 불명확한 불량을 보다 쉽게 검출할 수 있다.
이하 도 6 내지 도 9에서 다양한 실시예에 따른 전자 장치를 도시한다.도 6은 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 6을 참고하면, 시스템이 시작되면(S11), 프로세서는 레지스터로부터 시스템 초기설정 정보를 리드한다(S15). 시스템 초기설정 정보에 기초하여 전자장치의 각 구성이 셋팅될 수 있다(S20, S30).
시스템 초기설정 정보는 모니터링 캐시 영역을 구분하면서 모니터링 캐시의 활성화 조건을 시스템 설정할 수 있고, 프로세서는 상기 활성화 조건에 따라 모니터링 캐시를 활성화할 수 있다(S40).
예를 들어 활성화 조건은, 메인 메모리에 대한 최대 대역폭이 제1 기준값 이상이면 활성화 되고, 제2 기준값 이하가 되면 비활성화 되도록 설정할 수 있다. 또는 메인 메모리의 동시에 동작하는 뱅크의 개수의 범위에 따라 활성화 또는 비활성화될 수 있다.
프로세서는 모니터링 캐시가 활성화 되면, 모니터링 캐시는 메인 메모리에 모니터링 영역에 대한 설정을 수행한다(S42). 모니터링 영역에 대한 설정은 메인 메모리에서 모니터링 영역과 노말 영역을 각각 주소할당하고(S47), 모니터링 데이터(KData)를 모니터링 캐시(100)에서 메인 메모리의 모니터링 영역(41)으로 로딩하고, 모니터링 데이터에 대한 CRC 코드를 생성하는 것을 의미할 수 있다.
프로세서의 제어에 따라 모니터링 캐시가 모니터링 영역에 액세스 하면(S53), 모니터링 영역에 저장되어 있던 모니터링 데이터를 캐시로 로드하면서(S55) CRC 코드를 생성하고 검증값과 비교한다.(S61).
프로세서는 CRC코드 검증결과에 기초하여(S70) 시스템 환경 정보를 조정할 수 있다(S80). 예를 들면, 메인메모리에 대한 대역폭, 동작 클락 주파수, 동작 전압 등을 조정할 수 있다.
몇몇 실시예에 따라 프로세서는 조정된 시스템 환경 정보에 기초하여 시스템 제어 동작을 수행하면서, 주기적으로 또는 활성화 조건에 따라 모니터링 데이터에 대한 CRC 코드 검증 결과가 달라지면, 시스템 성능을 안정화시키기 위해 다시 시스템 환경 정보를 원래 상태로 복구할 수도 있다.
도 7은 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다. 도 6과 중복되는 설명은 생략한다.
도 7을 참고하면, 시스템이 시작되면(S11), 프로세서는 레지스터로부터 시스템 초기설정 정보를 리드한다(S15). 시스템 초기설정 정보에 기초하여 전자장치의 각 구성이 셋팅될 수 있다(S20, S30).
상기 셋팅은 예를 들면, 하나의 캐시(30)에 대해 시스템 초기설정 정보에 따라 노말 캐시 영역과 모니터 캐시 영역으로 구분되도록 분할(Split)할 수 있다(S31). 또한 메인 메모리는 시스템 초기설정 정보에 포함된 주소 정보로 모니터링 영역을 별도로 할당할 수 있다(S33).
시스템 초기설정 정보는 모니터링 캐시 영역을 구분하면서 모니터링 캐시의 활성화 조건을 시스템 설정할 수 있고, 프로세서는 상기 활성화 조건에 따라 모니터링 캐시를 활성화할 수 있다(S40).
프로세서는 모니터링 캐시가 활성화 되면, 모니터링 동작을 수행할 수 있다(S51). 모니터링 동작은 예를 들면 모니터링 데이터(KData)를 모니터링 캐시(100)에서 메인 메모리의 모니터링 영역(41)으로 로딩하고, 모니터링 데이터에 대한 CRC 코드를 생성하는 것을 의미할 수 있다.
프로세서의 제어에 따라 모니터링 캐시가 모니터링 영역에 액세스 하면(S53), 모니터링 영역에 저장되어 있던 모니터링 데이터를 캐시로 로드하면서 CRC 코드를 생성하고 검증값과 비교한다.(S60).
프로세서는 CRC코드 검증결과에 기초하여(S70) 시스템 환경 정보를 조정할 수 있다(S80).
도 8는 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 8을 참조하면, 도 7의 실시예와 달리 모니터링 캐시는 자체적으로 모니터링 데이터(KData)에 대한 CRC 코드를 생성하고, 생성된 CRC코드를 기저장된 검증값과 비교하여 프로세서(10)로 검증결과를 전송한다.
프로세서(10)는 검증결과에 기초하여, 레지스터(20)에 저장된 시스템 환경정보의 업데이트가 필요하다고 판단되면(S73), 업데이트가 필요한 시스템 환경 정보에 대한 레지스터 비트를 레지스터로 전송한다.
레지스터(20)는 프로세서(10)로부터 레지스터 비트를 수신하여 기존의 시스템 환경 정보를 새로 업데이트하고(S75), 프로세서(10)는 업데이트된 시스템 환경정보에 기초하여 시스템에 대한 제어동작을 수행한다.
도 9는 몇몇 실시예에 따른 전자장치의 동작방법을 도시한 도면이다.
도 9를 참조하면, 도 8의 실시예와 달리, 모니터링 데이터(KData)에 대한 CRC 코드 생성 및 검증은 전자장치(1)에 별도로 구현되는 CRC 모듈(153)에서 수행될 수 있다(S65). 이 경우 CRC 코드 검증 결과 이후의 S73 , S75, S80 단계는 도 8의 실시예와 중복되어 설명을 생략한다.
도 10은 몇몇 실시예에 따른 호스트-스토리지 시스템을 도시한 블록도이다.
호스트-스토리지 시스템(2)은 호스트(300) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 (NVM, 220)를 포함할 수 있다. 또한, 몇몇 실시예에서, 호스트(300)는 호스트 컨트롤러(310) 및 호스트 메모리(320)를 포함할 수 있다. 호스트 메모리(220)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트(300)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 예를 들어, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 비휘발성 메모리(220)가 플래시 메모리를 포함할 때, 이러한 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
몇몇 실시예에서, 호스트 컨트롤러(310)와 호스트 메모리(320)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 몇몇 실시예에서, 호스트 컨트롤러(310)와 호스트 메모리(320)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(310)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 이러한 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(320)는 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 어플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(310)는 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리(220)에 저장하거나, 비휘발성 메모리(220)의 데이터(예컨대, 리드 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 CPU(central processing unit, 213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer(FTL), 214), 패킷 매니저(215), 메인 메모리(216), ECC(error correction code, 217) 엔진, AES(advanced encryption standard, 218) 엔진, 캐시(220) 및 레지스터(230)을 더 포함할 수 있다.
스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(213)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리에 대한 데이터 기록 및 리드 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(300)와 패킷(packet)을 송수신할 수 있다. 호스트(300)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(250)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(300)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(250)로부터 리드된 데이터 등을 포함할 수 있다.
메모리 인터페이스(212)는 비휘발성 메모리(250)에 기록될 데이터를 비휘발성 메모리(250)로 송신하거나, 비휘발성 메모리(250)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(250) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(250) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(250) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(215)는 호스트(300)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(300)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(216)는 비휘발성 메모리(250)에 기록될 데이터 혹은 비휘발성 메모리(250)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 비휘발성 메모리(250)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리(250)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(250) 내에 저장될 수 있다. 비휘발성 메모리(250)로부터의 데이터 리드 시, ECC 엔진(217)은 리드 데이터와 함께 비휘발성 메모리(250)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
캐시(220)은 도 1 내지 도 9에서 설명한 캐시(30)로 구현될 수 있고, 레지스터(230) 또한 도 1 내지 도 9에서 설명한 레지스터(20)로 구현될 수 있다.
도 11는 몇몇 실시예에 따른 도 1의 전자장치가 적용된 시스템을 도시한 도면이다.
도 11의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 11의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 11을 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator) 블록(1130)을 더 포함할 수 있다. 이와 같은 가속기 블록(1130)은 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성(non-volatile memory, NVM) 스토리지(1320a, 1320b)를 포함할 수 있다. 비휘발성 스토리지(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(universal flash storage)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 12은 몇몇 실시예에 따른 전자 장치가 적용된 데이터 센터를 도시한 도면이다.
12을 참조하면, 데이터 센터(2000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(2000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 어플리케이션 서버들(2100 내지 2100n) 및 스토리지 서버들(2200 내지 2200m)을 포함할 수 있다. 어플리케이션 서버들(2100 내지 2100n)의 개수 및 스토리지 서버들(2200 내지 2200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(2100 내지 2100n)의 개수 및 스토리지 서버들(2200 내지 2200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(2100) 또는 스토리지 서버(2200)는 프로세서(2110, 2210) 및 메모리(2120, 2220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(2200)를 예시로 설명하면, 프로세서(2210)는 스토리지 서버(2200)의 전반적인 동작을 제어할 수 있고, 메모리(2220)에 액세스하여 메모리(2220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(2220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(2200)에 포함되는 프로세서(2210)의 개수 및 메모리(2220)의 개수는 다양하게 선택될 수 있다.
일 실시예에서, 프로세서(2210)와 메모리(2220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(2210)와 메모리(2220)의 개수는 서로 다를 수도 있다. 프로세서(2210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(2200)에 대한 상기 설명은, 어플리케이션 서버(2100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(2100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(2200)는 적어도 하나 이상의 스토리지 장치(2250)를 포함할 수 있다. 스토리지 서버(2200)에 포함되는 스토리지 장치(2250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
앞서 설명한 스토리지 어셈블리는 하나의 스토리지 장치(2250)의 형태로 호스트인 스토리지 서버(2200)에 장착 또는 탈착될 수 있다.
어플리케이션 서버들(2100 내지 2100n) 및 스토리지 서버들(2200 내지 2200m)은 네트워크(2300)를 통해 서로 통신할 수 있다. 네트워크(2300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(2300)의 액세스 방식에 따라 스토리지 서버들(2200 내지 2200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(2300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(2300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(2300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(2100) 및 스토리지 서버(2200)를 중심으로 설명하기로 한다. 어플리케이션 서버(2100)에 대한 설명은 다른 어플리케이션 서버(2100n)에도 적용될 수 있고, 스토리지 서버(2200)에 대한 설명은 다른 스토리지 서버(2200m)에도 적용될 수 있다.
어플리케이션 서버(2100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(2300)를 통해 스토리지 서버들(2200 내지 2200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(2100)는 사용자 또는 클라이언트가 리드 요청한 데이터를 스토리지 서버들(2200 내지 2200m) 중 하나로부터 네트워크(2300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(2100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(2100)는 네트워크(2300)를 통해 다른 어플리케이션 서버(2100n)에 포함된 메모리(2120n) 또는 스토리지 장치(2150n)에 액세스할 수 있고, 또는 네트워크(2300)를 통해 스토리지 서버(2200-2200m)에 포함된 메모리(2220-2220m) 또는 스토리지 장치(2250-2250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(2100)는 어플리케이션 서버들(2100-2100n) 및/또는 스토리지 서버들(2200-2200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(2100)는 어플리케이션 서버들(2100-2100n) 및/또는 스토리지 서버들(2200-2200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(2200-2200m)의 스토리지 장치로(2250-2250m)부터 스토리지 서버들(2200-2200m)의 메모리들(2220-2220m)을 거쳐서, 또는 바로 어플리케이션 서버들(2100-2100n)의 메모리(2120-2120n)로 이동될 수 있다. 네트워크(2300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(2200)를 예시로 설명하면, 인터페이스(2254)는 프로세서(2210)와 컨트롤러(2251)의 물리적 연결 및 NIC(2240)와 컨트롤러(2251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(2254)는 스토리지 장치(2250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(2254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(2200)는 스위치(2230) 및 NIC(2240)을 더 포함할 수 있다. 스위치(2230)는 프로세서(2210)의 제어에 따라 프로세서(2210)와 스토리지 장치(2250)를 선택적으로 연결시키거나, NIC(2240)과 스토리지 장치(2250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(2240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(2300)에 연결될 수 있다. NIC(2240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2210) 및/또는 스위치(2230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(2254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(2240)는 프로세서(2210), 스위치(2230), 스토리지 장치(2250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(2200-2200m) 또는 어플리케이션 서버(2100-2100n)에서 프로세서는 스토리지 장치(2130-2130n, 2250-2250m) 또는 메모리(2120-2120n, 2220-2220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(2150-2150m, 2250-2250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(2252-2252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(2252-2252m)로부터 데이터를 리드하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(2251)는 스토리지 장치(2250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(2251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(2251)는 기입 커맨드에 응답하여 낸드 플래시(2252)에 데이터를 기입할 수 있고, 또는 리드 커맨드에 응답하여 낸드 플래시(2252)로부터 데이터를 리드할 수 있다. 예를 들어, 기입 커맨드 및/또는 리드 커맨드는 스토리지 서버(2200) 내의 프로세서(2210), 다른 스토리지 서버(2200m) 내의 프로세서(2210m) 또는 어플리케이션 서버(2100, 2100n) 내의 프로세서(2110, 2110n)로부터 제공될 수 있다. DRAM(2253)은 낸드 플래시(2252)에 기입될 데이터 또는 낸드 플래시(2252)로부터 리드된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(2253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(2252)를 관리하기 위해 컨트롤러(2251)에서 생성된 데이터이다. 스토리지 장치(2250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1 : 전자 장치
10 : 프로세서
20 : 레지스터
30 : 캐시
40 : 메인 메모리 영역

Claims (20)

  1. 시스템을 제어하는 프로세서;
    노말(Normal) 동작에 따른 노말(Normal) 데이터를 저장하는 제1 영역 및 모니터링 데이터를 위한 제2 영역을 포함하는 메인 메모리;
    상기 프로세서의 모니터링 인에이블 신호에 따라 활성화되어 상기 제2 영역에 액세스하는 제1 캐시; 및
    상기 프로세서의 상기 노말 동작에 따라 상기 노말 데이터를 로드하는 제2 캐시를 포함하는 전자 장치.
  2. 제1항에 있어서, 상기 전자 장치는
    상기 시스템이 시작되면, 상기 메인 메모리를 상기 제1 영역과 상기 제2 영역으로 구분하여 주소할당하는, 전자 장치.
  3. 제1항에 있어서, 상기 전자 장치는
    상기 모니터링 데이터의 CRC(Cyclic Redundancy Check) 코드를 검증하는, 전자 장치.
  4. 제3항에 있어서, 상기 제1 캐시는 상기 제2 영역에 라이트(Write)되거나 리드(Read)된 상기 모니터링 데이터에 대해 CRC 코드를 생성하여 검증하고,
    상기 프로세서는 상기 생성된 CRC 코드의 검증 결과에 기초하여 시스템 환경 정보를 조정하는, 전자 장치.
  5. 제3항에 있어서, 상기 모니터링 인에이블 신호는
    시스템이 시작되면, BIOS 설정에 따라 주기적으로 또는 기설정된 활성화 조건으로 인에이블 되는, 전자 장치.
  6. 제1항에 있어서, 상기 모니터링 인에이블 신호의 활성화 조건을 저장하는 레지스터를 더 포함하고,
    상기 프로세서는 시스템 시작시 상기 레지스터로부터 상기 활성화 조건을 로딩하여 상기 시스템을 설정하는, 전자 장치.
  7. 제6항에 있어서, 상기 활성화 조건은 상기 프로세서 또는 상기 메인 메모리의 온도, 상기 메인 메모리에 대한 입출력 대역폭, 상기 메인 메모리에서의 뱅크 오퍼레이션 개수, 시스템의 동작 시간 중 적어도 하나를 포함하는, 전자 장치.
  8. 제7항에 있어서, 상기 프로세서는
    상기 모니터링 데이터의 CRC 코드 비교결과에 따라 시스템 환경정보를 조정하고, 상기 레지스터에 상기 조정된 시스템 환경정보를 업데이트하는, 전자 장치.
  9. 차량용 장치로서,
    시스템 초기 설정 정보 및 시스템 환경 정보를 저장하는 레지스터;
    상기 시스템 초기 설정 정보 및 시스템 환경 정보에 기초하여 시스템 제어 및 연산 동작을 수행하는 프로세서;
    상기 프로세서의 연산 동작에 기초한 노말 데이터를 저장하는 제1 영역 및 기설정된 모니터링 데이터를 저장하는 제2 영역을 포함하는 메인 메모리;
    상기 메인 메모리에 액세스하여 상기 모니터링 데이터에 대한 액세스 동작을 하는 제1 캐시; 및
    상기 메인 메모리에 액세스하여 상기 노말 데이터에 대한 액세스 동작을 하는 제2 캐시를 포함하고,
    상기 차량용 장치는 상기 모니터링 데이터에 대한 CRC(Cyclic Redundancy Check) 코드를 체크하여 시스템 환경을 모니터링하는 차량용 장치.
  10. 제9항에 있어서, 상기 시스템 초기 설정 정보는 제1 캐시의 활성화 조건 및 상기 메인 메모리의 상기 제1 영역 및 상기 제2 영역으로 구분하는 주소 할당 정보를 포함하는, 차량용 장치.
  11. 제10항에 있어서, 상기 활성화 조건은 상기 프로세서 또는 상기 메인 메모리의 온도, 상기 메인 메모리에 대한 입출력 대역폭, 상기 메인 메모리에서의 뱅크 오퍼레이션 개수, 시스템의 동작 시간 중 적어도 하나를 포함하는, 차량용 장치.
  12. 제9항에 있어서, 상기 제2 캐시는 상기 제2 영역에 상기 모니터링 데이터를 리드하거나 라이트하면서 상기 CRC 코드를 생성하고, 상기 생성된 CRC코드를 검증하여 상기 프로세서에 검증결과를 전송하는, 차량용 장치.
  13. 제9항에 있어서, 상기 차량용 장치는 상기 메인 메모리에 액세스되는 상기 노말데이터 및 상기 모니터링 데이터에 대한 CRC를 생성하고 검증하는 CRC 모듈을 더 포함하고,
    상기 CRC 모듈은 상기 모니터링 데이터에 대한 CRC 코드의 검증결과를 상기 프로세서에 전송하는, 차량용 장치.
  14. 제11항 또는 제12항에 있어서, 상기 프로세서는 상기 CRC 코드의 검증결과에 따라 상기 시스템 환경 정보를 조정하여 상기 레지스터에 업데이트하는, 차량용 장치.
  15. 스토리지 서버를 포함하는 데이터 센터에 있어서,
    상기 스토리지 서버는
    시스템 초기 설정 정보 및 시스템 환경 정보를 저장하는 레지스터;
    상기 시스템 초기 설정 정보 및 상기 시스템 환경 정보에 기초하여 상기 스토리지 서버의 동작을 제어하는 프로세서;
    상기 프로세서의 연산 동작에 기초한 노말 데이터를 저장하는 제1 영역 및 기설정된 모니터링 데이터를 저장하는 제2 영역을 포함하는 메인 메모리; 및
    상기 메인 메모리에 액세스하여 상기 모니터링 데이터에 대한 액세스 동작을 하는 모니터링 캐시를 포함하는, 데이터 센터.
  16. 제15항에 있어서, 상기 모니터링 캐시는 상기 시스템 초기 설정 정보에 기초하여 주기적으로 또는 활성화 조건에 따라 인에이블되는, 데이터 센터.
  17. 제15항에 있어서, 상기 프로세서는 상기 모니터링 데이터의 CRC(Cyclic Redundancy Check) 코드에 기초하여 상기 레지스터에 저장된 상기 시스템 환경 정보를 업데이트하는, 데이터 센터.
  18. 제17항에 있어서, 상기 프로세서는
    상기 업데이트된 시스템 환경 정보에 기초하여 상기 스토리지 서버의 동작을 제어하는, 데이터 센터.
  19. 제15항에 있어서, 상기 시스템 초기 설정 정보는
    상기 활성화 조건 및 상기 메인 메모리의 상기 제1 영역 및 상기 제2 영역으로 구분하는 주소 할당 정보를 포함하는, 데이터 센터.
  20. 제15항에 있어서, 상기 제2 캐시 영역은 상기 모니터링 데이터를 포함하고,
    시스템 시작시 상기 시스템 초기 설정 정보에 기초하여 상기 제2 캐시 영역에서 상기 제2 영역으로 라이트하거나 상기 제2 영역에서 상기 제2 캐시 영역으로 리드하는, 데이터 센터.















KR1020200140208A 2020-10-27 2020-10-27 전자 장치, 차량용 장치 및 데이터 센터 KR20220055771A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200140208A KR20220055771A (ko) 2020-10-27 2020-10-27 전자 장치, 차량용 장치 및 데이터 센터
EP21186882.3A EP3992799A1 (en) 2020-10-27 2021-07-21 Electronic device and automotive device
US17/388,072 US20220129383A1 (en) 2020-10-27 2021-07-29 Electronic device, automotive device, and data center
CN202111202249.7A CN114490166A (zh) 2020-10-27 2021-10-15 电子设备、车用设备和数据中心

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200140208A KR20220055771A (ko) 2020-10-27 2020-10-27 전자 장치, 차량용 장치 및 데이터 센터

Publications (1)

Publication Number Publication Date
KR20220055771A true KR20220055771A (ko) 2022-05-04

Family

ID=77021108

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200140208A KR20220055771A (ko) 2020-10-27 2020-10-27 전자 장치, 차량용 장치 및 데이터 센터

Country Status (4)

Country Link
US (1) US20220129383A1 (ko)
EP (1) EP3992799A1 (ko)
KR (1) KR20220055771A (ko)
CN (1) CN114490166A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114911412A (zh) * 2021-02-09 2022-08-16 荣耀终端有限公司 一种数据读写方法和混合型存储器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8904359B2 (en) * 2008-03-06 2014-12-02 International Business Machines Corporation On-demand monitoring of memory usage
US20120066551A1 (en) * 2010-09-15 2012-03-15 Alexandre Palus Run-time Verification of CPU Operation
KR101549433B1 (ko) * 2011-12-20 2015-09-02 가부시키가이샤 히다치 고쿠사이 덴키 기판 처리 시스템, 기판 처리 장치 및 기판 처리 장치의 데이터 축적 방법
US9442819B2 (en) * 2014-02-04 2016-09-13 Freescale Semiconductor, Inc. Method and apparatus for storing trace data
US10649684B2 (en) * 2017-03-16 2020-05-12 Arm Limited Memory access monitoring
US11392380B2 (en) * 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses

Also Published As

Publication number Publication date
EP3992799A1 (en) 2022-05-04
CN114490166A (zh) 2022-05-13
US20220129383A1 (en) 2022-04-28

Similar Documents

Publication Publication Date Title
US11688453B2 (en) Memory device, memory system and operating method
EP3992799A1 (en) Electronic device and automotive device
US20230376216A1 (en) Memory device, storage device, and computing system including memory device and storage device
CN117112219A (zh) 主机内存数据访问的方法和装置
KR20230167729A (ko) 스토리지 장치를 위한 아웃-오브-밴드 관리 방법, 베이스보드 관리 컨트롤러 및 스토리지 장치
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
US20230141936A1 (en) Secure processor, operating method thereof, and storage device including same
US20230359379A1 (en) Computing system generating map data, and method of operating the same
US11868270B2 (en) Storage system and storage device, and operating method thereof
US11914879B2 (en) Storage controller and storage system comprising the same
US20230143943A1 (en) Method of operating storage device for retention enhancement and storage device performing the same
EP4273703A1 (en) Computing system generating map data, and method of operating the same
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof
US20230376217A1 (en) Storage device, memory device, and computing system including the same
US20240192860A1 (en) Method and device for log structured merge-tree based key-value data storage
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
US20240086110A1 (en) Data storage method, storage apparatus and host
US20230359389A1 (en) Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices
US20230292449A1 (en) Storage Device
EP4283474A1 (en) Storage device, memory device, and computing system including the same
US20230350832A1 (en) Storage device, memory device, and system including storage device and memory device
KR20230067439A (ko) 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치
US20230152984A1 (en) Storage devices configured to obtain data of external devices for debugging
KR20230067457A (ko) 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법
CN117055816A (zh) 配置zns ssd的区域的方法和装置