KR102320407B1 - I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법 - Google Patents
I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법 Download PDFInfo
- Publication number
- KR102320407B1 KR102320407B1 KR1020150080026A KR20150080026A KR102320407B1 KR 102320407 B1 KR102320407 B1 KR 102320407B1 KR 1020150080026 A KR1020150080026 A KR 1020150080026A KR 20150080026 A KR20150080026 A KR 20150080026A KR 102320407 B1 KR102320407 B1 KR 102320407B1
- Authority
- KR
- South Korea
- Prior art keywords
- module
- controller
- packet
- computing device
- external device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0745—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1443—Transmit or communication errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 외부 장치와 시스템 관리 버스를 통해 I2C 방식으로 통신을 수행하는 컴퓨팅 장치에 관한 것이다. 컴퓨팅 장치는 상기 시스템 관리 버스를 통해 상기 외부 장치와 I2C 통신을 수행하는 I2C 모듈, 상기 시스템 관리 버스를 통해 상기 I2C 모듈에 주기적으로 설정된 패킷을 전송하는 패킷 생성 모듈, 및 상기 I2C 모듈 및 상기 패킷 생성 모듈의 동작을 제어하는 I2C 컨트롤러를 포함하되, 상기 I2C 모듈은 상기 패킷 생성 모듈로부터 패킷을 전송받는 경우 패킷 수신 신호를 상기 I2C 컨트롤러로 전송하고, 상기 I2C 컨트롤러는 설정된 시간 동안 상기 패킷 수신 신호를 전송받지 못하는 경우 상기 I2C 모듈을 초기화한다.
Description
본 발명은 컴퓨팅 장치에 관한 것으로, 더욱 상세하게는 I2C 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법에 관한 것이다.
데스크탑, 노트북, 스마트 폰, 미디어 플레이어 및 태블릿 컴퓨터와 같은 컴퓨팅 장치는 집적회로(Integrated Circuit;IC)를 포함한다. 통상적으로 IC는 특정 기능을 수행하도록 설계되며, 이에 따라 컴퓨팅 장치들을 동작시키기 위해 기능이 서로 다른 많은 IC가 필요하다. 따라서, 서로 다른 기능을 수행하는 IC는 서로 규칙적인 데이터 또는 정보를 송/수신하기 위해 서로 협력할 수 있어야 한다. 이를 위해 컴퓨팅 장치는 내부 IC 사이에서 일반적으로 I2C 프로토콜을 이용하여 통신을 수행한다.
또한, 컴퓨팅 장치는 외부 장치와의 통신을 위한 I2C 인터페이스를 구비하며, I2C 컨트롤러의 제어 아래 외부 장치와 마스터 또는 슬레이브 모드로서 통신을 수행할 수 있다. 컴퓨팅 장치가 외부 장치와의 관계에서 슬레이브 모드로 동작하는 경우, 외부 장치와 I2C 통신 중에 컴퓨팅 장치의 I2C 모듈에 통신 오류가 발생할 수 있다. 이러한 통신 오류는 버스 행(bus hang)을 발생시켜 I2C 통신의 신뢰성을 저하시킨다.
슬레이브 모드로 동작하는 컴퓨팅 장치에서 통신 오류가 발생한 경우, 마스터 모드로 동작하는 외부 장치는 오류가 발생한 I2C 모듈을 초기화할 수 없다. 또한, 버스를 컨트롤할 수 없는 슬레이브 장치가 통신 오류에서 스스로 벗어나는 것 또한 어렵다. 따라서, 이러한 버스 행 상태가 지속되는 경우 외부 장치와 컴퓨팅 장치 사이의 통신 신뢰성이 저하될 수 있다.
본 발명의 목적은 컴퓨팅 장치가 슬레이브 모드에서 외부 장치와 I2C 방식으로 통신을 수행 중 에러가 발생한 경우 그 에러를 탐지하고 에러를 복구하는 컴퓨팅 장치 및 그것의 에러 복구 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 컴퓨팅 장치는, 시스템 관리 버스를 통해 외부 장치와 I2C 통신을 수행하는 I2C 모듈, 상기 시스템 관리 버스를 통해 상기 I2C 모듈에 주기적으로 설정된 패킷을 전송하는 패킷 생성 모듈, 및 상기 I2C 모듈 및 상기 패킷 생성 모듈의 동작을 제어하는 I2C 컨트롤러를 포함하되, 상기 I2C 모듈은 상기 패킷 생성 모듈로부터 패킷을 전송받는 경우 패킷 수신 신호를 상기 I2C 컨트롤러로 전송하고, 상기 I2C 컨트롤러는 설정된 시간 동안 상기 패킷 수신 신호를 전송받지 못하는 경우 상기 I2C 모듈을 초기화한다.
실시 예로서, 상기 컴퓨팅 장치는 상기 외부 장치와의 관계에서 슬레이브로 동작한다.
실시 예로서, 상기 I2C 모듈은 I2C 통신을 수행하는 하드웨어로 구성된 기능 블록 및 소프트웨어로 구성된 자료 구조를 포함한다.
실시 예로서, 상기 기능 블록은 상태 머신(state machine) 및 레지스터를 포함한다.
실시 예로서, 상기 I2C 컨트롤러는 상기 I2C 모듈이 설정된 시간 동안 상기 호스트 또는 상기 패킷 생성 모듈로부터 패킷을 전송받지 못하는 경우, 상기 상태 머신과 레지스터 및 자료 구조를 초기화하다.
실시 예로서, 상기 통신 기능 블록은 리셋을 위한 리셋 핀을 포함하며, 상기 I2C 컨트롤러는 상기 리셋 핀에 논리 하이 또는 논리 로우의 값을 인가하여 상기 I2C 모듈의 초기화를 수행한다.
실시 예로서, 상기 패킷 생성 모듈은 주기적으로 상기 시스템 관리 버스를 통해 상기 I2C 모듈로 I2C 방식의 패킷을 전송하도록 구성된 I2C 모듈이다.
실시 예로서, 상기 패킷 생성 모듈은 상기 I2C 모듈에 대해 마스터로 동작한다.
실시 예로서, 상기 패킷 생성 모듈이 상기 I2C 모듈로 패킷을 전송하는 주기는 상기 I2C 컨트롤러가 상기 I2C 모듈로 전송되는 패킷을 확인하는 상기 설정된 시간보다 짧다.
실시 예로서, 상기 컴퓨팅 장치는 스토리지 장치로 온 보드 솔리드 스테이트 드라이브(on-Board Solid State Drive)를 포함하며, 상기 I2C 모듈 및 상기 시스템 관리 버스를 통해 상기 외부 장치와 통신한다.
본 발명의 실시 예에 따른 복수의 I2C 모듈을 포함하는 컴퓨팅 장치가 시스템 관리 버스를 통해 외부 장치와 I2C 통신을 수행 중 발생한 통신 에러를 복구하는 방법은, I2C 컨트롤러가 상기 외부 장치와 I2C 통신을 수행하는 제 1 I2C 모듈이 상기 외부 장치 또는 제 2 I2C 모듈로부터 패킷 수신 여부를 확인하는 단계 및 상기 제 1 I2C 모듈이 설정된 시간 동안 상기 외부 장치 또는 상기 제 2 I2C 모듈로부터 패킷을 수신하지 못하는 경우, 상기 I2C 컨트롤러가 상기 제 1 I2C 모듈을 초기화하는 단계를 포함하되, 상기 제 2 I2C 모듈은 상기 시스템 관리 버스를 통해 상기 제 1 I2C 모듈에 주기적으로 설정된 패킷을 전송하는 방법.
본 발명의 다른 실시 예에 따른 시스템 관리 버스를 통해 I2C 통신을 수행하는 복수의 I2C 모듈들을 포함하는 컴퓨팅 장치는, 외부 장치와 시스템 관리 버스를 통해 I2C 통신을 수행하는 제 1 I2C 모듈, 상기 제 1 I2C 모듈로 상기 시스템 관리 버스를 통해 설정된 패킷을 주기적으로 전송하는 제 2 I2C 모듈, 및 상기 제 1 I2C 모듈 및 상기 제 2 I2C 모듈의 동작을 제어하는 I2C 컨트롤러를 포함하되, 상기 I2C 컨트롤러는 상기 I2C 모듈이 설정된 시간 동안 상기 호스트 또는 상기 제 2 I2C 모듈로부터 패킷을 전송받지 못하는 경우, 상기 제 1 I2C 모듈을 초기화한다.
본 발명에 따르면, 컴퓨팅 장치가 외부 장치와의 관계에서 슬레이브 모드로 I2C 통신을 수행 중 발생한 에러를 탐지하고 이를 복구할 수 있어, 컴퓨팅 장치의 통신 신뢰성을 향상시킬 수 있다.
도 1은 컴퓨팅 장치와 외부 장치가 I2C 방식을 이용하여 통신을 수행하는 것을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 장치가 외부 장치와 I2C 통신을 수행하는 것을 개념적으로 보여주는 도면이다.
도 3은 도 2의 I2C 컨트롤러를 보다 구체적으로 보여주는 블록도이다.
도 4는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 5는 본 발명에 따른 컴퓨팅 장치의 통신 에러 복구 방법을 예시적으로 보여주는 순서도이다.
도 6은 본 발명에 따른 I2C 컨트롤러가 적용된 컴퓨팅 장치를 예시적으로 보여주는 도면이다.
도 7은 본 발명에 따른 I2C 컨트롤러를 포함하는 SSD 시스템을 예시적으로 보여주는 블록도이다.
도 8은 본 발명에 따른 I2C 컨트롤러가 적용된 사용자 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 장치가 외부 장치와 I2C 통신을 수행하는 것을 개념적으로 보여주는 도면이다.
도 3은 도 2의 I2C 컨트롤러를 보다 구체적으로 보여주는 블록도이다.
도 4는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 5는 본 발명에 따른 컴퓨팅 장치의 통신 에러 복구 방법을 예시적으로 보여주는 순서도이다.
도 6은 본 발명에 따른 I2C 컨트롤러가 적용된 컴퓨팅 장치를 예시적으로 보여주는 도면이다.
도 7은 본 발명에 따른 I2C 컨트롤러를 포함하는 SSD 시스템을 예시적으로 보여주는 블록도이다.
도 8은 본 발명에 따른 I2C 컨트롤러가 적용된 사용자 시스템을 보여주는 블록도이다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양하게 변형 또는 변경될 수 있고, 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 컴퓨팅 장치와 외부 장치가 I2C 방식을 이용하여 통신을 수행하는 것을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 장치(10) 및 외부 장치(20)는 I2C 방식을 이용하여 서로 통신을 수행한다. 이 경우, 예시적으로 외부 장치(20)는 마스터로, 그리고 컴퓨팅 장치(10)는 슬레이브로 동작할 수 있다.
컴퓨팅 장치(10)는 I2C 통신을 위한 I2C 인터페이스(12)를 포함할 수 있다. I2C 인터페이스(12)는 외부 장치와 시스템 관리 버스를 통해 연결되는 I2C 모듈(14) 및 I2C 모듈(14)의 동작을 제어하기 위한 I2C 컨트롤러(14)를 포함할 수 있다. I2C 모듈(14)은 시스템 관리 버스(System Management Bus, SMbus)를 통해 외부 장치(20)와 연결되어 데이터를 주고 받을 수 있다.
외부 장치(20)는 I2C 통신을 위한 I2C 통신을 위한 I2C 인터페이스(22)를 포함할 수 있다. I2C 인터페이스(22)는 I2C 모듈(24) 및 I2C 모듈(24)의 동작을 제어하기 위한 I2C 컨트롤러(26)를 포함할 수 있다. 외부 장치(20)의 I2C 모듈(24)은 시스템 관리 버스(SMbus)를 통해 컴퓨팅 장치(10)와 연결되어 데이터를 주고 받을 수 있다.
외부 장치(20)가 마스터로 동작하고, 컴퓨팅 장치(10)가 슬레이브로 동작하여 시스템 관리 버스(SMbus)를 통해 서로 데이터를 주고 받는 경우, 슬레이브로 동작하는 컴퓨팅 장치(10)의 I2C 모듈(14)에서 에러가 발생할 수 있다. 즉, 시스템 관리 버스(SMbus)에 버스 행(hang) 현상이 발생할 수 있다. 이 경우, 에러가 발생한 I2C 모듈(14)을 에러 상태로부터 복구하지 않는다면, 시스템 관리 버스(SMbus)와 연결된 다른 마스터 장치들 및 슬레이브 장치들(미도시) 또한 서로 통신할 수 없게 된다.
외부 장치(20)와의 사이에서 슬레이브로 동작하는 컴퓨팅 장치(10)는 주도적으로 시스템 관리 버스(SMbus)를 제어할 수 없으므로, 발생한 에러를 탐지하지 못할 수 있고, 발생한 에러를 복구하지 못할 수 있다.
또한, 컴퓨팅 장치(10)의 I2C 모듈(14)에 외부 장치(20)와 연결된 리셋 핀이 없으므로, 외부 장치(20)는 에러가 발생한 컴퓨팅 장치(10)의 I2C 모듈(14)을 초기화(reset)할 수 없다.
상술한 바와 같이, 컴퓨팅 장치(10)와 외부 장치(20)가 I2C 방식을 이용하여 통신을 수행할 때, 슬레이브로 동작하는 장치에서 에러가 발생하는 경우, 마스터 및 슬레이브 모드로 동작하는 장치 모두 에러 상태를 복구하지 못한다. 따라서 컴퓨팅 장치(10)와 외부 장치(20) 사이의 통신 신뢰성이 저하될 수 있다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 장치가 외부 장치와 I2C 통신을 수행하는 것을 개념적으로 보여주는 도면이다. 도 2를 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 장치(100)는 외부 장치(20)와 I2C 방식으로 통신을 수행하기 위한 I2C 인터페이스(110)를 포함한다. I2C 인터페이스(110)는 I2C 모듈(111), 패킷 생성 모듈(112), 및 I2C 컨트롤러(113)을 포함할 수 있다. 또한, 외부 장치(20)는 컴퓨팅 장치(100)와 I2C 방식으로 통신을 수행하기 위한 I2C 인터페이스(22)를 포함한다. I2C 인터페이스(22)는 I2C 모듈(24) 및 I2C 컨트롤러(26)를 포함할 수 있다. 여기에서, 외부 장치(20)는 호스트로서 컴퓨팅 장치(100)와의 관계에서 마스터로 동작할 수 있다. 컴퓨팅 장치(100)는 외부 장치(20)와의 관계에서 슬레이브로 동작할 수 있다.
예시적으로, 본 발명의 실시 예에 따른 컴퓨팅 장치(100)는 I2C 방식의 통신을 지원하는 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들일 수 있다.
컴퓨팅 장치(110)의 I2C 모듈(111)은 외부 장치(20)의 I2C 모듈(24)과 시스템 관리 버스(SMbus)를 통해 연결되어 데이터를 주고 받을 수 있다. 예시적으로, 컴퓨팅 장치(100)는 슬레이브 모드로, 외부 장치(20)는 마스터 모드로 동작할 수 있다. 따라서, 외부 장치(20)의 제어에 따라 컴퓨팅 장치(110)는 I2C 모듈(111)을 통해 데이터를 전송받거나 또는 요청된 데이터를 전송할 수 있다.
I2C 모듈(111)은 시스템 관리 버스(SMbus)를 통해 외부 장치(20)의 I2C 모듈(24)과 연결될 수 있다. I2C 모듈(111)은 패킷 생성 모듈(112)로부터 패킷을 전송받는 경우, 패킷 수신 신호(Ack)를 I2C 컨트롤러(113)로 전송할 수 있다. 또는, I2C 모듈(111)은 외부 장치(20) 또는 패킷 생성 모듈(112) 중 어느 한 곳으로부터 패킷을 전송받는 경우, 패킷 수신 신호(Ack)를 I2C 모듈(113)로 전송할 수 있다.
패킷 생성 모듈(112)은 I2C 컨트롤러(113)의 제어에 따라 I2C 모듈(111)로 설정된 패킷을 주기적으로 전송할 수 있다. I2C 모듈(111)과 패킷 생성 모듈(112)는 시스템 관리 버스(SMbus)를 통해 연결될 수 있다. 패킷 생성 모듈(112)이 생성하는 패킷의 데이터는 작은 크기로 설정될 수 있다. 패킷 생성 모듈(112)은 I2C 모듈(111)과의 관계에서 마스터로 동작할 수 있다. 예시적으로, 패킷 생성 모듈(112)은 컴퓨팅 장치(100) 내부의 다른 I2C 모듈일 수 있다. 패킷 생성 모듈(112)은 I2C 패킷을 생성할 수 있는 어떠한 구성으로도 구현될 수 있다.
I2C 컨트롤러(113)는 패킷 생성 모듈(112)이 주기적으로 설정된 패킷을 I2C 모듈(11)로 전송하도록 패킷 생성 모듈(112)을 제어할 수 있다. I2C 컨트롤러(113)는 I2C 모듈(111)로부터 패킷 수신 신호(Ack)를 전달받을 수 있다. I2C 컨트롤러(113)는 내부에 시간 값을 획득할 수 있는 타이머(113a)를 포함할 수 있다. I2C 컨트롤러(113)는 타이머(113a)로부터의 시간 값을 참조하여 I2C 모듈(111)로부터 패킷 수신 신호(Ack)를 설정된 시간 내에 전송받지 못하는 경우, I2C 모듈(111)을 초기화할 수 있다.
외부 장치(20)와 컴퓨팅 장치(100) 사이에서 I2C 통신이 수행되던 중 I2C 모듈(111)에 통신 에러가 발생한 경우, 시스템 관리 버스(SMbus)는 행(hang) 상태가 된다. 즉, 시스템 관리 버스(SMbus)에 연결된 다른 마스터 또는 슬레이브 기능 블록들이 시스템 관리 버스(SMbus)를 통해 통신을 수행할 수 없게 된다. 이와 같이, I2C 모듈(111)에 에러가 발생한 경우, I2C 모듈(111)은 외부 장치(20)의 I2C 모듈(24) 및 패킷 생성 모듈(112) 중 어느 곳으로부터도 패킷을 전송받을 수 없게 된다. 따라서, I2C 모듈(111)은 패킷 수신 신호(Ack)를 I2C 컨트롤러(113)로 전송하지 못한다.
I2C 컨트롤러(113)는 I2C 모듈(111)로부터 전송되는 패킷 수신 신호(Ack)를확인한다. 예컨대, I2C 컨트롤러(113)는 패킷 수신 신호(Ack)가 설정된 시간 내에 전송되는지를 확인할 수 있다. I2C 컨트롤러(113)는 설정된 시간 내에 패킷 수신 신호(Ack)를 전송받지 못하는 경우, I2C 모듈(111)의 초기화 동작을 수행한다.
보다 구체적으로, I2C 컨트롤러(113)는 I2C 모듈(111)의 하드웨어 구성요소를 리셋하고, 관련 소프트웨어인 자료 구조 등을 초기화할 수 있다. I2C 모듈(111)은 I2C 동작을 수행하기 위한 하드웨어로 구현된 기능 블록(111a)를 포함할 수 있다. 기능 블록은 상태 머신(state machine) 및 레지스터(resister)를 포함할 수 있다.
I2C 컨트롤러(113)가 에러가 발생한 I2C 모듈(111)을 초기화하는 경우, I2C 모듈(111)의 에러가 복구되고, 시스템 관리 버스(SMbus)는 행(hang) 상태에서 벗어날 수 있다.
상술한 본 발명의 실시 예에 따른 컴퓨팅 장치(100)는 시스템 관리 버스(SMbus)를 통해 외부 장치(20)와 I2C 방식의 통신 수행 중 버스 행이 발생한 경우 이를 탐지하고, 에러가 발생한 I2C 모듈을 초기화하여 버스 행 상태에서 벗어날 수 있다. 따라서, 외부 장치(20)와의 통신 신뢰성이 향상되는 효과가 있다.
도 3은 도 2의 컴퓨팅 장치를 보다 상세히 보여주는 블럭도이다. 도 3을 참조하면, 컴퓨팅 장치(100)는 I2C 인터페이스(110), 프로세서(120), SRAM(130), ROM(140), 플래시 인터페이스(150)을 포함할 수 있다. I2C 인터페이스(110)는 I2C 모듈들(111, 112) 및 I2C 컨트롤러(113)를 포함할 수 있다. I2C 모듈들(111, 112)은 I2C 컨트롤러(113)의 제어에 따라 시스템 관리 버스(SMbus)를 통해 외부 장치(20, 도 2 참조) 또는 컴퓨팅 장치(100) 내부의 다른 I2C 모듈들(미도시)과의 통신을 수행할 수 있다.
프로세서(120)는 컴퓨팅 장치(100)의 제반 동작을 제어할 수 있다. SRAM(130)은 컴퓨팅 장치(100)의 캐시 메모리, 메인 메모리 등으로서 사용될 수 있다. ROM(140)은 컴퓨팅 장치(100)가 동작하는데 요구되는 다양한 정보들을 펌웨어 형태로 저장할 수 있다. 예시적으로, SRAM(130) 또는 ROM(140)에 저장된 데이터, 정보, 또는 펌웨어는 프로세서(120)에 의해 관리되거나 또는 실행될 수 있다. 예시적으로, ROM(140)에는 상술한 I2C 컨트롤러(113)의 동작의 수행을 위한 I2C 드라이버 및 I2C 모듈들(111, 112)의 자료 구조 등이 저장될 수 있다. 예시적으로, 자료 구조는 펌웨어에 의해 관리될 수 있다.
상술한 I2C 컨트롤러(113)의 동작들 즉, I2C 모듈의 에러 탐지 및 에러가 발생한 I2C 모듈의 초기화 동작의 수행은 ROM(140)에 저장된 I2C 드라이버를 SRAM(130)에 로드되어 실행될 수 있다. 컴퓨팅 장치(100)가 부팅되는 경우, 프로세서(120)는 ROM(140)에 저장된 I2C 드라이버를 SRAM(130)으로 로드할 수 있다. 로드된 I2C 드라이버의 구동에 의해 I2C 컨트롤러(113)는 상술한 제반 동작을 수행할 것이다.
I2C 컨트롤러(113)는 제 1 및 제 2 I2C 모듈들(111, 112)의 동작을 제어하여 외부 장치(20)와의 I2C 통신을 수행할 수 있다. I2C 컨트롤러(120)는 제 2 I2C 모듈(112)이 주기적으로 설정된 패킷을 제 1 I2C 모듈(111)로 전송하도록 제 2 I2C 모듈(110b)을 제어할 수 있다. I2C 컨트롤러(113)는 외부 장치(20)로부터 시스템 관리 버스를 통해 데이터 읽기 요청이 오는 경우, 독출된 데이터를 제 1 I2C 모듈(111)을 통해 외부 장치(20)로 전송할 수 있다. I2C 컨트롤러(113)는 외부 장치(20)로부터 시스템 관리 버스를 통해 데이터 쓰기 요청이 오는 경우, 전송받은 데이터를 쓰기 동작이 수행될 메모리에 전달하도록 제 1 I2C 모듈(111)을 제어할 수 있다.
제 1 I2C 모듈(111)은 제 2 I2C 모듈(112)로부터 패킷을 전송받는 경우, 패킷 수신 신호(AcK)를 I2C 컨트롤러(113)로 전송할 수 있다. 제 2 I2C 모듈(112)는 도 2의 패킷 생성 모듈로 동작할 수 있다.
I2C 컨트롤러(113)는 제 1 I2C 모듈(111)의 하드웨어 구성요소를 리셋하고, 관련 소프트웨어인 자료 구조 등을 초기화할 수 있다. 제 1 I2C 모듈(111)은 하드웨어 구성요소인 상태 머신(state machine), 레지스터(resister)들 및 소프트웨어인 자료 구조 등을 포함할 수 있다. 즉, I2C 컨트롤러(113)는 제 1 I2C 모듈(111)의 하드웨어 및 소프트웨어 구성을 초기화하여 에러가 발생한 제 1 I2C 모듈(111)을 에러 상태에서 복구할 수 있다.
예시적으로, 제 1 I2C 모듈(111)의 하드웨어 구성요소는 리셋 핀을 포함할 수 있고, 이 경우, I2C 컨트롤러(113)는 리셋 핀에 로직 하이 또는 로직 로우 값을 인가하여 리셋 동작을 수행할 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다. 도 4를 참조하면, 컴퓨팅 장치(200)는 인쇄 회로 기판(PCB; Printed Circuit Board), 표시 장치(DP; Display Device), 및 입력 장치(ID; Input Device)를 포함할 수 있다.
인쇄 회로 기판(PCB)은 컴퓨팅 장치(200)의 마더 보드(mother board) 혹은 메인 보드(main board)일 수 있다. 컴퓨팅 장치(200)가 동작하는데 요구되는 다양한 하드웨어들은 인쇄 회로 기판(PCB) 상에 실장(mount)될 수 있다. 예시적으로, 인쇄 회로 기판(PCB)은 반도체 칩, 반도체 패키지, 수동 소자, 능동 소자, 제어 회로, 또는 전자 회로 등과 같은 다양한 하드웨어 구성들이 실장될 수 있는 영역들을 포함할 수 있다. 예를 들어, 스토리지 컨트롤러(110) 및 제1 및 제2 불휘발성 메모리 장치들(120, 130)은 인쇄 회로 기판(PCB)에 제공되는 전용 영역 상에 실장될 수 있다.
인쇄 회로 기판(PCB)은 다양한 배선들을 포함할 수 있다. 다양한 배선들은 인쇄 회로 기판(PCB) 상에 실장된 하드웨어 구성들을 각각 전기적으로 연결할 수 있다. 인쇄 회로 기판(PCB) 상에 실장된 하드웨어 구성들은 다양한 배선들을 통해 서로 통신할 수 있다.
컴퓨팅 시스템(200)에 포함된 스토리지 장치(SD), 중앙 처리 유닛(201, CPU; Central Processing Unit), 메모리(202), 칩셋(203), 그래픽 프로세스 유닛(204, GPU; Graphic Processing Unit), 네트워크 모듈(205), 입출력 컨트롤러(206), 복수의 입출력 소켓들(206a~206c), 전원 관리 집적 회로(207, PMIC; Power Management Integrated Circuit), 및 I2C 컨트롤러(208)는 인쇄 회로 기판(PBC) 상에 제공되는 각 영역들에 실장될 수 있다.
스토리지 장치(SD)는 스토리지 컨트롤러(210) 및 제1 및 제2 불휘발성 메모리 장치들(220, 230)을 포함한다. 스토리지 컨트롤러(210)는 중앙 처리 유닛(201)의 제어에 따라 제1 및 제2 불휘발성 메모리 장치들(220, 230)을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 중앙 처리 유닛(201)의 제어에 따라 제1 및 제2 불휘발성 메모리 장치들(220, 230)에 저장된 데이터를 읽거나 또는 제1 및 제2 불휘발성 메모리 장치들(220, 230)에 데이터를 저장할 수 있다. 예시적으로, 스토리지 컨트롤러(210)는 칩셋(203)을 통해 중앙 처리 유닛(201)과 통신할 수 있다.
제 1 및 제 2 불휘발성 메모리 장치들(220, 230)은 스토리지 컨트롤러(210)의 제어에 따라 동작할 수 있다. 예시적으로, 제1 및 제2 불휘발성 메모리 장치들(220, 230)은 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다. 간결한 설명을 위하여, 제 1 및 제 2 불휘발성 메모리 장치들(220, 230)은 낸드 플래시 메모리 장치인 것으로 가정한다.
예시적으로, 스토리지 장치(SD)는 컴퓨팅 장치(200)의 대용량 저장 매체로서 사용될 수 있다. 앞서 설명된 바와 같이, 스토리지 장치(SD)의 스토리지 컨트롤러(210) 및 제 1 및 제 2 불휘발성 메모리 장치들(220, 230)은 컴퓨팅 장치(200)의 인쇄 회로 기판(PCB) 상에 실장될 수 있다. 즉, 스토리지 장치(SD)는 온-보드형 저장 매체(On-Board Storage Media) 또는 온-보드형 SSD(On-Board SSD)일 수 있다.
중앙 처리 유닛(201)은 컴퓨팅 장치(200)가 동작하는데 요구되는 제반 동작을 수행할 수 있다. 예를 들어, 중앙 처리 유닛(201)은 사용자로부터 입력된 명령어를 해석하고, 해석된 명령어를 기반으로 연산 동작을 수행하거나 또는 데이터를 처리할 수 있다. 중앙 처리 유닛(201)은 연산 동작 또는 데이터 처리 결과를 출력할 수 있다.
메모리(202)는 컴퓨팅 장치(200)의 메인 메모리(main memory)로서 사용될 수 있다. 메모리(202)는 DRAM(Dynamic Random Access Memory), SDRAM(Synchronous DRAM), DDR SDRAM(Double Data Rate SDRAM), DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM(Low Power SDRAM), LPDDR2 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 상PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 예시적으로, 메모리(202)는 인쇄 회로 기판(PCB) 상에 실장되고, 인쇄 회로 기판(PCB)에 제공되는 배선들을 통해 중앙 처리 유닛(201)과 전기적으로 연결될 수 있다.
칩셋(203)은 중앙 처리 유닛(201)의 제어에 따라 컴퓨팅 장치(200)에 포함된 다양한 하드웨어 구성들을 제어하는 장치이다. 예를 들어, 칩셋(203)은 중앙 처리 유닛(201)의 제어에 따라 스토리지 장치(SD), 그래픽 처리 유닛(204), 네트워크 모듈(205), 및 입출력 컨트롤러(206)를 제어할 수 있다. 예시적으로, 칩셋(203)은 인쇄 회로 기판(PCB) 상에 실장되고, 인쇄 회로 기판(PCB)에 제공되는 배선들을 통해 다양한 하드웨어들과 전기적으로 연결될 수 있다. 예시적으로, 칩셋(203)은 다양한 하드웨어들 각각과 미리 정해진 인터페이스에 의해 통신할 수 있다. 예시적으로, 미리 정해진 인터페이스는 USB(universal serial bus), (MMC)multimedia card, embedded-MMC, PCI(peripheral component interconnection), PCI express, ATA(advanced technology attachment), serial-ATA, parallel-ATA, SCSI(small computer small interface), ESDI(enhanced small disk interface), IDE(integrated drive electronics), Firewire, UFS(universal flash storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다.
그래픽 처리 유닛(204, GPU)은 중앙 처리 유닛(201)에 의해 처리된 데이터 또는 연산 동작의 결과를 영상 신호로 변환할 수 있다. 변환된 영상 신호는 표시 장치(DP)에 의해 출력될 수 있다. 예시적으로, 그래픽 처리 유닛(204)은 인쇄 회로 기판(PCB)에 실장되고, 인쇄 회로 기판(PCB) 상에 제공되는 배선들을 통해 칩셋(203) 및 커넥터(204a)와 연결될 수 있다. 비록 도면에 도시되지는 않았으나, 그래픽 처리 유닛(204)은 중앙 처리 유닛(201) 내에 포함될 수 있다. 예시적으로, 커넥터(204a)는 표시 장치(DP)와 연결될 수 있다.
네트워크 모듈(205)은 컴퓨팅 장치(200) 외부와의 유선 또는 무선 통신을 지원한다. 예를 들어, 네트워크 모듈(205)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 또는 유선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(205)은 인쇄 회로 기판(PCB)에 실장되고, 인쇄 회로 기판(PCB) 상에 제공되는 배선들을 통해 칩셋(203)과 연결될 수 있다.
입출력 컨트롤러(206)는 컴퓨팅 장치(200)에 포함된 입력 장치(ID)로부터 입력되는 정보를 처리하거나 커넥터들(206a, 206b)을 제어할 수 있다. 예시적으로, 입출력 컨트롤러(206)는 외부 커넥터들(206a, 206b)과 연결되고, 이를 관리할 수 있다. 예시적으로 입출력 컨트롤러(206)는 인쇄 회로 기판(PCB) 상에 실장되고, 인쇄 회로 기판(PCB)에 제공되는 배선들을 통해 커넥터들(206a, 206b)과 연결될 수 있다. 예시적으로, 커넥터들(206a, 206b)은 PS2 포트, PCI 슬롯, DIMM 슬롯, USB 단자, RGB 포트, DVI 포트, HDMI 포트 등과 같은 입출력 단자들을 포함할 수 있다. 예시적으로, 커넥터들(206a, 206b)은 인쇄 회로 기판(PCB) 상에 실장될 수 있다.
전원 관리 집적 회로(207, PMIC)은 외부로부터 공급되는 전원을 기반으로, 컴퓨팅 장치(200)의 다양한 하드웨어들에 전원을 공급할 수 있다. 예를 들어, 전원 관리 집적 회로(207)은 스토리지 장치(SD)로 전원을 공급할 수 있다. 비록 도면에 도시되지는 않았으나, 전원 관리 집적 회로(207)는 스토리지 장치(SD)를 위한 전용 전원을 제공할 수 있고, 스토리지 컨트롤러(210) 내에 집적될 수 있다.
I2C 컨트롤러(208)는 외부 장치 예컨대, 호스트와 I2C 통신을 수행하기 위한 제 1 및 제 2 I2C 모듈들(208a, 208b)을 포함할 수 있다. 제 1 I2C 모듈(208a), 제 2 I2C 모듈(208b), 및 외부 장치는 시스템 관리 버스(SMbus)를 통해 서로 연결될 수 있다.
외부 장치는 호스트로, 제 1 I2C 모듈(208a)은 슬레이브로 동작하여 I2C 통신을 수행할 수 있다. 여기에서, 외부 장치는 I2C 모듈을 통해 스토리지 컨트롤러(210)과 연결될 수 있다. 외부 장치는 스토리지 컨트롤러(210)와 연결되어 온-보드 SSD의 각종 기능들을 검사할 수 있다. 예시적으로, 외부 장치는 온-보드 SSD에 대한 디버깅을 수행할 수 있는 디버거 장치일 수 있다. 예시적으로, 외부 장치는 사이드 밴드 인터페이스를 통해 스토리지 컨트롤러(210)와 연결되어 통신할 수 있다. 사이드 밴드 인터페이스는 I2C 모듈 및 시스템 관리 버스를 포함할 수 있다.
제 2 I2C 모듈(208b)은 I2C 컨트롤러(208)의 제어에 따라 설정된 패킷을 주기적으로 제 1 I2C 모듈(208a)로 전송한다. I2C 컨트롤러(208)는 제 1 I2C 모듈(208a)이 설정된 시간 내에 외부 장치 또는 제 2 I2C 모듈(208b) 중 어느 한 곳으로부터 패킷을 전송받았는지 여부를 확인한다. 여기에서, 제 2 I2C 모듈(208b)이 제 1 I2C 모듈(208a)로 설정된 패킷을 전송하는 주기는 I2C 컨트롤러(208)가 패킷의 전송 여부를 확인하는 설정된 시간보다 짧을 것이다.
I2C 컨트롤러(208)는 제 1 I2C 모듈(208a)이 설정된 시간 내에 패킷을 전송받지 못하는 경우, 제 1 I2C 모듈(208a)을 초기화한다. 보다 구체적으로, I2C 컨트롤러(208)는 상술한 바와 같이 제 1 I2C 모듈(208a)의 하드웨어 및 소프트웨어 구성들을 모두 초기화할 수 있다.
상술한 바와 같이 본 발명의 다른 실시 예에 따른 컴퓨팅 장치(200)는 외부 장치와의 I2C 통신 수행시 통신의 신뢰성이 향상될 수 있다.
도 5는 본 발명에 따른 컴퓨팅 장치의 통신 에러 복구 방법을 예시적으로 보여주는 순서도이다. 본 발명에 따른 컴퓨팅 장치는 외부 장치와 I2C 방식으로 통신 수행 중 오류가 발생한 I2C 모듈을 탐지하고, 그 I2C 모듈을 초기화하여 오류 상태로부터 벗어날 수 있다. 이하에서, 도 3 및 도 5를 참조하며 본 발명에 따른 컴퓨팅 장치(100)의 통신 에러 복구 방법을 보다 자세히 설명한다.
단계 S110에서, 컴퓨팅 장치(100)가 부팅되는 경우, 프로세서(120)에 의해 I2C 드라이버가 SRAM(130)에 로드되어 구동된다. I2C 드라이버가 구동되어 상술한 I2C 컨트롤러(113)의 동작이 실행될 수 있다.
단계 S120에서, 패킷 생성 모듈(112)은 I2C 컨트롤러(113)의 제어에 따라 설정된 주기로 임의의 패킷을 I2C 모듈(111)로 전송한다.
단계 S130에서, I2C 모듈(111)은 패킷 생성 모듈(112)로부터 패킷을 수신하는 경우, 패킷 수신 신호(Ack)를 I2C 컨트롤러(113)로 전송한다.
단계 S140에서, I2C 컨트롤러(113)는 설정된 시간 동안 I2C 모듈(111)로부터 패킷 수신 신호(Ack)가 전송되는지 여부를 확인한다.
단계 S150에서, I2C 컨트롤러(113)는 설정된 시간 동안 I2C 모듈(111)로부터 패킷 수신 신호(Ack)를 전송받지 못하는 경우, I2C 모듈(111)을 초기화한다.
상술한 바와 같이, 본 발명에 따른 컴퓨팅 장치의 통신 에러 복구 방법은 외부 장치와 I2C 통신을 수행하던 도중 I2C 모듈에 에러가 발생한 경우, 이를 탐지하고 에러가 발생된 I2C 모듈을 초기화하여 에러를 복구할 수 있다. 따라서, 컴퓨팅 장치와 외부 장치와의 I2C 통신의 신뢰성이 향상될 수 있다.
도 6은 본 발명에 따른 I2C 컨트롤러가 적용된 컴퓨팅 장치를 예시적으로 보여주는 도면이다. 예시적으로, 컴퓨팅 장치(1000)는 노트북일 수 있다. 도 6을 참조하면, 컴퓨팅 장치(1000)는 메인 보드(1100), 모니터(1200), 키보드(1300), 상판(1400), 및 하판(1500)을 포함한다.
모니터(1200)는 상판(1400)의 일면 상에 제공되며, 연성 회로 기판을 통해 메인 보드(1100)와 연결될 수 있다. 모니터(1200)는 메인 보드(1100)로부터 제공되는 영상 신호를 출력할 수 있다.
키보드(1300)는 상판(1400)의 상부에 배치되고, 연성 회로 기판을 통해 메인 보드(1100)와 연결될 수 있다.
메인 보드(1100)는 상판(1400) 및 하판(1500) 사이에 제공될 수 있다. 메인 보드(1100)는 앞서 설명된 바와 같이, 컴퓨팅 장치(1000)가 동작하는데 요구되는 다양한 하드웨어들을 포함할 수 있다. 예를 들어, 중앙 처리 유닛(1110), 스토리지 장치(1120), 메모리(1130), 본 발명에 따른 I2C 컨트롤러(1140) 등과 같은 반도체 패키지, 하드웨어 회로 등이 메인 보드(1100) 상에 실장될 수 있다.
예시적으로, 스토리지 장치(1120)는 온-보드형 SSD일 수 있다. 스토리지 장치(1120)는 I2C 컨트롤러(1140)의 I2C 모듈을 통해 외부 장치와 연결되어 각종 동동작들을 수행할 수 있다. 예시적으로, 스토리지 장치(1120)는 자가 진단, 동작 성능 확인 등의 동작을 수행할 수 있다.
본 발명에 따른 I2C 컨트롤러를 포함하는 컴퓨팅 장치(1000)는 외부 장치와 I2C 모듈을 통해 연결되어 각종 동작을 수행하던 도중 I2C 모듈에 에러가 발생한 경우, 해당 I2C 모듈을 초기화하여 에러 상태에서 복구될 수 있다. 따라서, 외부 장치와의 통신 신뢰성이 향상될 수 있다.
도 7은 본 발명에 따른 I2C 컨트롤러를 포함하는 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 7을 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함할 수 있다. SSD(2200)는 신호 커넥터(2001)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2002)를 통해 전원(PWR)을 입력받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 버퍼 메모리(2240), 및 I2C 컨트롤러(2250)를 포함할 수 있다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(2221~222n)을 제어할 수 있다. 복수의 플래시 메모리들(2221~222n)은 SSD 컨트롤러(2210)의 제어에 따라 프로그램 동작을 수행할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(2000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2230)는 SSD(2200) 내에 위치할 수도 있고, SSD(2200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2230)는 메인 보드에 위치하며, SSD(2200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
예시적으로, SSD 시스템(2000)에 포함된 구성 요소들 각각은 반도체 패키지들로 구현될 수 있고, 각 반도체 패키지들은 인쇄 회로 기판에 실장될 수 있다. 각 반도체 패키지들이 인쇄 회로 기판에 실장된 이 후에, SSD 시스템(2000)은 I2C 컨트롤러(2250)를 통해 호스트(2300)의 제어 아래 각종 성능 진단 동작들을 수행할 수 있다.
본 발명에 따른 I2C 컨트롤러를 포함하는 SSD 시스템(2000)은 호스트와 I2C 모듈을 통해 연결되어 각종 성능 진단 동작을 수행하던 도중 I2C 모듈에 에러가 발생한 경우, 해당 I2C 모듈을 초기화하여 에러 상태에서 복구될 수 있다. 따라서, 호스트와의 통신 신뢰성이 향상될 수 있다.
도 8은 본 발명에 따른 I2C 컨트롤러가 적용된 사용자 시스템을 보여주는 블록도이다. 도 8을 참조하면, 사용자 시스템(3000)은 애플리케이션 프로세서(3100), 메모리 모듈(3200), 네트워크 모듈(3300), 스토리지 모듈(3400), 및 사용자 인터페이스(3500)를 포함한다.
애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(3100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(3200)은 사용자 시스템(3000)의 주메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(3200)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 예시적으로, 메모리 모듈(3200)는 애플리케이션 프로세서(3100)와 POP 방식으로 패키징될 수 있다.
네트워크 모듈(3300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 통신을 지원할 수 있다. 또한, 네트워크 모듈(3300)은 본 발명에 따른 I2C 컨트롤러(3310)를 포함할 수 있다. 네트워크 모듈(3300)은 I2C 컨트롤러를 통해 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 애플리케이션 프로세서(3100)에 포함될 수 있다.
스토리지 모듈(3400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(3400)은 스토리지 모듈(3400)에 저장된 데이터를 애플리케이션 프로세서(3100)로 전송할 수 있다. 예시적으로, 스토리지 모듈(3400)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다.
예시적으로, 스토리지 모듈(3400)은 온-보드 SSD일 수 있다. 스토리지 모듈(3400)은 별도의 인쇄 회로 기판 상에 실장될 수 있고, 실장된 후 I2C 컨트롤러(3310)를 통해 외부 장치(ED)와 연결되어 외부 장치(ED)의 제어에 따라 기능 점검 및 자가 진단 동작 등을 수행할 수 있다.
외부 장치(ED)와 I2C 컨트롤러(3310)를 통해 연결되어 스토리지 모듈(3400)의 각종 성능 진단 동작을 수행하던 도중 I2C 컨트롤러(3310)에 포함된 I2C 모듈에 에러가 발생한 경우, 해당 I2C 모듈을 초기화하여 에러 상태에서 복구될 수 있다. 따라서, 외부 장치(ED)와의 통신 신뢰성이 향상될 수 있다.
사용자 인터페이스(3500)는 애플리케이션 프로세서(3100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(3500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
상술된 본 발명의 실시 예들에 따르면, I2C 컨트롤러를 포함하는 컴퓨팅 장치는 외부 장치와 시스템 관리 버스를 통해 연결되어 I2C 통신을 수행할 수 있다. I2C 통신을 수행하던 도중 외부 장치와 연결된 컴퓨팅 장치의 I2C 모듈에 통신 에러가 발생한 경우, I2C 컨트롤러는 이를 감지하고 해당 I2C 모듈을 초기화하여 에러 상태에서 벗어날 수 있다. 따라서, 본 발명의 실시 예들에 따른 컴퓨팅 장치는 외부 장치와의 I2C 방식의 통신 수행시 통신의 신뢰성이 향상될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예들에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10, 100, 200: 컴퓨팅 장치
20: 외부 장치
12, 22, 110: I2C 인터페이스
14, 24, 111, 208a, 208b: I2C 모듈
112: 패킷 생성 모듈
16, 26, 113, 208: I2C 컨트롤러
113a: 타이머
120: 프로세서
130: SRAM
140: ROM
150: 플래시 인터페이스
1000: 컴퓨팅 장치
2000: SSD 시스템
3000: 사용자 시스템
20: 외부 장치
12, 22, 110: I2C 인터페이스
14, 24, 111, 208a, 208b: I2C 모듈
112: 패킷 생성 모듈
16, 26, 113, 208: I2C 컨트롤러
113a: 타이머
120: 프로세서
130: SRAM
140: ROM
150: 플래시 인터페이스
1000: 컴퓨팅 장치
2000: SSD 시스템
3000: 사용자 시스템
Claims (10)
- 외부 장치와 시스템 관리 버스를 통해 I2C 방식으로 통신을 수행하는 컴퓨팅 장치에 있어서:
상기 시스템 관리 버스를 통해 상기 외부 장치와 I2C 통신을 수행하는 I2C 모듈;
상기 시스템 관리 버스를 통해 상기 I2C 모듈에 패킷을 전송하는 패킷 생성 모듈; 및
상기 I2C 모듈 및 상기 패킷 생성 모듈의 동작을 제어하는 I2C 컨트롤러를 포함하되,
상기 I2C 모듈은 상태 머신(state machine) 및 레지스터를 포함하고,
상기 I2C 컨트롤러에 의하여 제어되는 동작들 중 적어도 하나와 관련하여 상기 시스템 관리 버스에서 발생하는 복수의 버스 행(bus hang)들에 소요되는 시간들 중 적어도 하나의 시간 동안 상기 I2C 컨트롤러가 상기 I2C 모듈로부터 패킷 수신 신호를 전송 받지 못하는 경우, 상기 I2C 컨트롤러는 상기 버스 행 상태를 해제하기 위하여 상기 상태 머신 및 상기 레지스터를 초기화하기 위한 초기화 신호를 상기 I2C 모듈에 전달함으로써 상기 I2C 모듈을 초기화하는 컴퓨팅 장치. - 제 1 항에 있어서,
상기 컴퓨팅 장치는 상기 외부 장치와의 관계에서 슬레이브로 동작하는 컴퓨팅 장치. - 제 1 항에 있어서,
상기 I2C 모듈은 상기 I2C 통신을 수행하는 하드웨어로 구성된 기능 블록 및 소프트웨어로 구성된 자료 구조를 포함하는 컴퓨팅 장치. - 제 3 항에 있어서,
상기 기능 블록은 상기 상태 머신 및 상기 레지스터를 포함하는 컴퓨팅 장치. - 제 4 항에 있어서,
상기 I2C 컨트롤러가 상기 시간들 중 적어도 하나의 시간 동안 상기 I2C 모듈로부터 상기 패킷 수신 신호를 전송 받지 못하는 경우, 상기 I2C 컨트롤러는 상기 자료 구조를 초기화하는 컴퓨팅 장치. - 제 4 항에 있어서,
상기 기능 블록은 리셋을 위한 리셋 핀을 포함하고,
상기 I2C 컨트롤러는 상기 리셋 핀에 논리 하이 또는 논리 로우의 값을 인가하여 상기 I2C 모듈의 초기화를 수행하는 컴퓨팅 장치. - 제 1 항에 있어서,
상기 패킷 생성 모듈이 상기 I2C 모듈로 패킷을 전송하는 주기는 상기 I2C 컨트롤러가 상기 I2C 모듈로부터 전송되는 상기 패킷 수신 신호를 확인하는 시간들 중 적어도 하나 보다 짧은 컴퓨팅 장치. - I2C 인터페이스를 포함하는 컴퓨팅 장치가 시스템 관리 버스를 통해 외부 장치와 I2C 통신을 수행 중 발생한 통신 에러를 복구하는 방법에 있어서:
패킷 생성 모듈이 I2C 모듈로 패킷을 주기적으로 전송하는 단계;
상기 I2C 모듈이 상기 패킷 생성 모듈로부터 패킷을 전송받는 경우, 패킷 수신 신호를 I2C 컨트롤러로 전송하는 단계; 및
상기 I2C 컨트롤러에 의하여 제어되는 복수의 동작들 중 적어도 하나와 관련하여 상기 시스템 관리 버스에서 발생하는 버스 행(bus hang)들에 소요되는 시간들 중 적어도 하나의 시간 내에 상기 패킷 수신 신호를 전송 받지 못한 경우, 상기 I2C 컨트롤러가 상기 I2C 모듈의 상태 머신 및 레지스터를 초기화하는 단계를 포함하되,
상기 I2C 컨트롤러는 상기 버스 행 상태의 해소를 위하여 상기 I2C 모듈에 초기화 신호를 전달함으로써, 상기 상태 머신 및 상기 레지스터를 초기화하는 방법. - 제 8 항에 있어서,
상기 컴퓨팅 장치는 상기 외부 장치와의 관계에서 슬레이브로 동작하는 방법. - 제 8 항에 있어서,
상기 상태 머신 및 상기 레지스터가 초기화되는 경우, 상기 I2C 모듈의 자료 구조를 초기화하는 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150080026A KR102320407B1 (ko) | 2015-06-05 | 2015-06-05 | I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법 |
US15/057,456 US10067906B2 (en) | 2015-06-05 | 2016-03-01 | Computing device including an inter-integrated circuit (I2C) communication module and a communication error recovery method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150080026A KR102320407B1 (ko) | 2015-06-05 | 2015-06-05 | I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160143985A KR20160143985A (ko) | 2016-12-15 |
KR102320407B1 true KR102320407B1 (ko) | 2021-11-03 |
Family
ID=57451817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150080026A KR102320407B1 (ko) | 2015-06-05 | 2015-06-05 | I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10067906B2 (ko) |
KR (1) | KR102320407B1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296434B2 (en) * | 2017-01-17 | 2019-05-21 | Quanta Computer Inc. | Bus hang detection and find out |
JP6935673B2 (ja) * | 2017-03-22 | 2021-09-15 | コニカミノルタ株式会社 | 情報処理機器 |
CN107517314B (zh) * | 2017-08-24 | 2020-05-08 | Oppo广东移动通信有限公司 | 移动终端、控制方法、控制装置以及存储介质 |
US10852792B2 (en) * | 2018-10-25 | 2020-12-01 | Dell Products, L.P. | System and method for recovery of sideband interfaces for controllers |
EP4202707A4 (en) * | 2020-09-17 | 2023-08-23 | Huawei Technologies Co., Ltd. | COMMUNICATION METHOD AND APPARATUS USING AN INTER-INTEGRATED CIRCUIT |
CN112422850B (zh) * | 2020-11-16 | 2024-10-22 | 飞昂创新科技南通有限公司 | 一种针对hdmi协议低速信号进行线速转发的电路 |
US11803493B2 (en) * | 2020-11-30 | 2023-10-31 | Dell Products L.P. | Systems and methods for management controller co-processor host to variable subsystem proxy |
CN115686164A (zh) * | 2021-07-26 | 2023-02-03 | 瑞昱半导体股份有限公司 | 供电端装置、供电系统以及非暂态电脑可读取媒体 |
CN113641618B (zh) * | 2021-08-12 | 2024-06-18 | 海信空调有限公司 | Iic通讯控制方法、用电设备和计算机可读存储介质 |
KR102717304B1 (ko) * | 2021-12-24 | 2024-10-15 | 한국전자기술연구원 | 네트워크 버스를 이용한 레이다 rfic의 센서 연결 방법 및 장치 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050005044A1 (en) | 2003-07-02 | 2005-01-06 | Ling-Yi Liu | Storage virtualization computer system and external controller therefor |
US20160202914A1 (en) | 2015-01-13 | 2016-07-14 | Sandisk Technologies Inc. | System and method for memory command queue management and configurable memory status checking |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728908B1 (en) | 1999-11-18 | 2004-04-27 | California Institute Of Technology | I2C bus protocol controller with fault tolerance |
KR100936939B1 (ko) | 2008-03-03 | 2010-01-13 | 국방과학연구소 | 다중 수신채널 레이더용 송수신기의 자가진단 장치 |
US20140244874A1 (en) | 2012-01-26 | 2014-08-28 | Hewlett-Packard Development Company, L.P. | Restoring stability to an unstable bus |
CN103838698A (zh) | 2012-11-27 | 2014-06-04 | 鸿富锦精密工业(深圳)有限公司 | I2c总线架构及设备可用性查询方法 |
TWI516936B (zh) | 2012-12-07 | 2016-01-11 | 群聯電子股份有限公司 | 運作模式切換方法、記憶體控制器與記憶體儲存裝置 |
-
2015
- 2015-06-05 KR KR1020150080026A patent/KR102320407B1/ko active IP Right Grant
-
2016
- 2016-03-01 US US15/057,456 patent/US10067906B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050005044A1 (en) | 2003-07-02 | 2005-01-06 | Ling-Yi Liu | Storage virtualization computer system and external controller therefor |
US20160202914A1 (en) | 2015-01-13 | 2016-07-14 | Sandisk Technologies Inc. | System and method for memory command queue management and configurable memory status checking |
Also Published As
Publication number | Publication date |
---|---|
US10067906B2 (en) | 2018-09-04 |
KR20160143985A (ko) | 2016-12-15 |
US20160357701A1 (en) | 2016-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102320407B1 (ko) | I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법 | |
US8151036B2 (en) | Memory controller, memory system, and access control method of flash memory | |
KR102229024B1 (ko) | 스스로 에러를 검출하고 로그를 저장할 수 있는 데이터 저장 장치와 이를 포함하는 시스템 | |
US10229018B2 (en) | System and method for data restore flexibility on dual channel NVDIMMs | |
US9400602B2 (en) | Stacked memory device control | |
US11182328B2 (en) | Storage device and operating method thereof | |
US10055321B2 (en) | Storage device, main board in which the storage device is embedded, and self-diagnosis method thereof | |
US9460813B2 (en) | Memory system | |
US10754800B2 (en) | Storage device configured to update field programmable gate array and method of operating the same | |
US20180203816A1 (en) | System including hot plug module and memory module | |
KR20140146275A (ko) | 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템 | |
US8883521B2 (en) | Control method of multi-chip package memory device | |
US20170123881A1 (en) | Test method of volatile memory device embedded in electronic device | |
US11294780B2 (en) | Memory controller and operating method thereof | |
US10467020B2 (en) | Memory device, and information-processing device | |
US10861576B2 (en) | Nonvolatile memory device, operating method thereof and data storage device including the same | |
US11748025B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
CN111459527A (zh) | 存储器系统及其操作方法 | |
KR20160144564A (ko) | 불휘발성 메모리 모듈 및 그것의 동작 방법 | |
US20160004660A1 (en) | Memory system and data storage device | |
KR102450556B1 (ko) | 불휘발성 메모리 장치들을 제어할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US12045494B2 (en) | AER and AEN for overlapping cross feature | |
CN114385070B (zh) | 主机、数据存储装置、数据处理系统以及数据处理方法 | |
TW201310249A (zh) | Usb存儲卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |