KR101408434B1 - 주변장치 컴포넌트를 위한 높은 우선순위 커맨드 큐 - Google Patents
주변장치 컴포넌트를 위한 높은 우선순위 커맨드 큐 Download PDFInfo
- Publication number
- KR101408434B1 KR101408434B1 KR1020120095875A KR20120095875A KR101408434B1 KR 101408434 B1 KR101408434 B1 KR 101408434B1 KR 1020120095875 A KR1020120095875 A KR 1020120095875A KR 20120095875 A KR20120095875 A KR 20120095875A KR 101408434 B1 KR101408434 B1 KR 101408434B1
- Authority
- KR
- South Korea
- Prior art keywords
- commands
- command
- command queue
- flash memory
- interface unit
- 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/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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/14—Handling requests for interconnection or transfer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Microcomputers (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
실시예에서, 주변장치 컴포넌트는 주변장치 인터페이스 상의 전송을 수행하기 위한 커맨드들의 세트를 저장하도록 구성되는 낮은 우선순위 커맨드 큐 및 상기 인터페이스 상의 전송을 수행하기 위한 커맨드들의 제2 세트를 저장하도록 구성되는 높은 우선순위 커맨드 큐를 포함할 수 있다. 낮은 우선순위 큐 내의 커맨드들은 커맨드들의 세트가 커맨드들의 제2 세트를 수행하도록 차단될 수 있는 포인트들을 식별하는 표시들을 포함할 수 있다. 제어 회로가 낮은 우선순위 커맨드 큐에 결합될 수 있고, 표시들에 응답하여 낮은 우선순위 큐로부터 커맨드들의 프로세싱을 차단할 수 있고, 높은 우선순위 커맨드 큐로부터 커맨드들을 프로세싱할 수 있다.
Description
본 발명은 집적 회로들의 분야에 관한 것이고, 더욱 구체적으로, 집적 회로 내의 주변장치 컴포넌트에서의 커맨드 프로세싱에 관한 것이다.
상당한 데이터 대역폭을 갖는 주변장치 인터페이스 컨트롤러에서, 일어날 수 있는 도전들 중 하나는 외부 프로세서로부터 주변장치 인터페이스 컨트롤러에 제어 입력을 제공하고 있다는 것이다. 통상적으로, 주변장치 인터페이스 컨트롤러와 메모리 사이에 데이터를 전송하는 주변장치 컨트롤러에 대한 동일한 내부 인터페이스는 (예를 들어, 주변장치 인터페이스 컨트롤러의 제어 레지스터들에 대한 일련의 기입들을 통해) 외부 프로세서로부터 제어 입력을 제공하는 데 이용된다. 데이터 전송들이 일어나고 있는 동안, 주변장치 인터페이스에 대한 메모리는 데이터 전송들로 포화될 수 있다. 따라서, 다음 세트의 데이터 전송들을 위해 배열하기 위한 제어 입력들은 현재의 데이터 전송들이 완료할 때까지 효과적으로 로크 아웃(lock out)될 수 있다. 제어 입력들이 제공되고 있는 시간 동안, 주변장치 인터페이스 컨트롤러에 의해 제어되는 외부 주변장치 인터페이스는 유휴 상태(idle)일 수 있다.
주변장치 대 메모리 인터페이스에서의 경합(contention)을 줄이기 위한 하나의 메커니즘은, 주변장치 인터페이스 컨트롤러 하드웨어를 제어하기 위해 프로그램을 실행하는 프로세서를 주변장치 인터페이스 컨트롤러에 포함하는 것이다. 그러나, 이러한 메커니즘은 다양한 방식으로 비용이 많이 든다: (개별 컴포넌트로서 또는 주변장치 인터페이스 컨트롤러 설계 내로 통합될 수 있는 지적 재산으로서) 프로세서를 취득하기 위한 금전적인 면에서; 프로세서가 포함될 때 주변장치 인터페이스 컨트롤러에 의해 점유되는 공간에 대하여; 및 프로세서에 의해 소모되는 전력에 대하여. 부가적으로, 실행될 프로그램은 시스템 메모리에 저장되고, 따라서 명령어 인출들은 주변장치 대 메모리 인터페이스에서의 데이터 전송들과 경쟁할 수 있다.
부가적으로, 더욱 중요한(또는 더욱 높은 우선순위) 데이터 전송을 수행하기 위한 요구가 주어진 데이터 전송이 시작된 후에 식별되는 경우에, 하나의 데이터 전송을 차단하여 다른 데이터 전송을 수행하는 것은 복잡하다.
실시예에서, 집적 회로는 집적 회로의 외부 인터페이스를 제어하도록 구성되는 주변장치 컴포넌트를 포함한다. 예를 들어, 주변장치 컴포넌트는 플래시 메모리 인터페이스 유닛과 같은 메모리 인터페이스 유닛일 수 있다. 주변장치 컴포넌트에 대한 내부 인터페이스는 외부 인터페이스로/로부터의 데이터 전송들과 주변장치 컴포넌트에 대한 제어 통신들 사이에 공유될 수 있다. 주변장치 컴포넌트는 인터페이스 상의 전송을 수행하기 위한 커맨드들의 세트를 저장하도록 구성되는 낮은 우선순위 커맨드 큐를 포함할 수 있다. 부가적으로, 주변장치 컴포넌트는 인터페이스 상의 전송을 수행하기 위한 커맨드들의 제2 세트를 저장하도록 구성되는 높은 우선순위 커맨드 큐를 포함할 수 있다. 낮은 우선순위 큐 내의 커맨드들은 커맨드들의 세트가 커맨드들의 제2 세트를 수행하도록 차단될 수 있는 포인트들을 식별하는 표시들을 포함할 수 있다. 제어 회로가 낮은 우선순위 커맨드 큐에 결합될 수 있고, 커맨드들을 판독하고 커맨드들에 응답하여 인터페이스 상의 전송을 일으키도록 인터페이스 컨트롤러와 통신할 수 있다. 부가적으로, 제어 회로는 표시들에 응답하여 낮은 우선순위 큐로부터 커맨드들의 프로세싱을 차단할 수 있고, 높은 우선순위 커맨드 큐로부터 커맨드들을 프로세싱할 수 있다.
실시예에서, 커맨드들의 제2 세트에 의해 표현되는 높은 우선순위 전송은 낮은 우선순위 큐가 먼저 비우도록(empty) 요구된 것보다 더욱 신속하게 수행될 수 있다. 부가적으로, 차단가능한 포인트에서 낮은 우선순위 전송을 차단함으로써, 낮은 우선순위 전송은 높은 우선순위 전송이 완료되었을 때 재개될 수 있다. 높은 우선순위 전송 전에 발생된 프로세싱은 정확하게 완료되었을 수 있고, 반복될 필요가 없다.
다음의 상세한 설명은 이제 간략하게 설명되는 첨부 도면들을 참조한다.
도 1은 집적 회로, 메모리, 플래시 메모리의 일 실시예의 블록도이다.
도 2는 도 1에 예시된 플래시 메모리 인터페이스의 일 실시예의 블록도이다.
도 3은 기입 동작을 수신하는 것에 응답하여 도 2에 예시된 플래시 메모리 인터페이스 제어 회로의 일 실시예의 동작을 예시하는 흐름도이다.
도 4는 플래시 메모리 인터페이스 제어 회로에 의해 지원되는 커맨드들의 일 실시예를 예시하는 표이다.
도 5는 낮은 우선순위 커맨드 선입선출 버퍼(FIFO)로부터 커맨드를 판독하는 것에 응답하여 도 2에 예시된 플래시 메모리 인터페이스 제어 회로의 일 실시예의 동작을 예시하는 흐름도이다.
도 6은 높은 우선순위 커맨드 선입선출 버퍼(FIFO)로부터 커맨드를 판독하는 것에 응답하여 도 2에 예시된 플래시 메모리 인터페이스 제어 회로의 일 실시예의 동작을 예시하는 흐름도이다.
도 7은 매크로 메모리의 예시적인 이용의 블록도이다.
도 8은 도 1에 도시된 프로세서의 일 실시예에 의해 실행되는 플래시 메모리 인터페이스 코드의 일 실시예의 동작을 도시하는 흐름도이다.
도 9는 도 1에 예시된 장치를 포함하는 시스템의 일 실시예의 블록도이다.
도 10은 컴퓨터 액세스 가능한 저장 매체의 일 실시예의 블록도이다.
본 발명은 다양한 수정들 및 대안적인 형태들을 허용하고, 그의 특정 실시예들은 도면들에서 예시적으로 도시되고, 본원에서 상세하게 설명될 것이다. 그러나, 도면들 및 그에 대한 상세한 설명은 발명을 개시된 특정 형태로 한정하도록 의도되지 않고, 반대로, 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명의 사상 및 범위 내에 있는 모든 수정들, 등가물들 및 대안들을 커버하도록 의도된다는 것을 이해해야 한다. 본원에 이용된 제목들은 오직 구성을 위한 것이고, 설명의 범위를 제한하는 데 이용되는 것을 의미하지 않는다. 본 출원에 걸쳐서 이용되는 바와 같이, "할 수 있다(may)"라는 단어는 의무적인 의미(즉, 해야 한다는 의미)보다는, 허용의 의미(즉, 가능성이 있다는 의미)에서 이용된다. 유사하게, "포함한다", "포함하는", 및 "포함하다"라는 단어들은, 포함하지만 그것으로 한정되지 않음을 의미한다.
다양한 유닛들, 회로들, 또는 다른 컴포넌트들은 태스크 또는 태스크들을 수행"하도록 구성되는"으로서 설명될 수 있다. 이러한 문맥에서, "하도록 구성되는"은 동작 동안 태스크 또는 태스크들을 수행"하는 회로를 갖는"을 일반적으로 의미하는 구조의 광의의 기재이다. 이와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on)이 아닐 때에도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "하도록 구성되는"에 대응하는 구조를 형성하는 회로는 동작을 구현하기 위해 실행 가능한 프로그램 명령어들을 저장하는 메모리 및/또는 하드웨어 회로들을 포함할 수 있다. 메모리는 정적 또는 동적 랜덤 액세스 메모리와 같은 휘발성 메모리 및/또는 광학적 또는 자기 디스크 저장소, 플래시 메모리, 프로그램 가능한 리드 온리 메모리들 등과 같은 불휘발성 메모리를 포함할 수 있다. 유사하게, 다양한 유닛/회로/컴포넌트는 설명의 편의를 위해 태스크 또는 태스크들을 수행하는 것으로서 설명될 수 있다. 이러한 설명은 "하도록 구성되는"이라는 구절을 포함하는 것으로서 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성되는 유닛/회로/컴포넌트를 기재하는 것은 그 유닛/회로/컴포넌트에 대해 35 U.S.C. §112, 패러그래프 식스 해석(paragraph six interpretation)을 호출하지 않도록 명백히 의도된다.
도 1은 집적 회로, 메모리, 플래시 메모리의 일 실시예의 블록도이다.
도 2는 도 1에 예시된 플래시 메모리 인터페이스의 일 실시예의 블록도이다.
도 3은 기입 동작을 수신하는 것에 응답하여 도 2에 예시된 플래시 메모리 인터페이스 제어 회로의 일 실시예의 동작을 예시하는 흐름도이다.
도 4는 플래시 메모리 인터페이스 제어 회로에 의해 지원되는 커맨드들의 일 실시예를 예시하는 표이다.
도 5는 낮은 우선순위 커맨드 선입선출 버퍼(FIFO)로부터 커맨드를 판독하는 것에 응답하여 도 2에 예시된 플래시 메모리 인터페이스 제어 회로의 일 실시예의 동작을 예시하는 흐름도이다.
도 6은 높은 우선순위 커맨드 선입선출 버퍼(FIFO)로부터 커맨드를 판독하는 것에 응답하여 도 2에 예시된 플래시 메모리 인터페이스 제어 회로의 일 실시예의 동작을 예시하는 흐름도이다.
도 7은 매크로 메모리의 예시적인 이용의 블록도이다.
도 8은 도 1에 도시된 프로세서의 일 실시예에 의해 실행되는 플래시 메모리 인터페이스 코드의 일 실시예의 동작을 도시하는 흐름도이다.
도 9는 도 1에 예시된 장치를 포함하는 시스템의 일 실시예의 블록도이다.
도 10은 컴퓨터 액세스 가능한 저장 매체의 일 실시예의 블록도이다.
본 발명은 다양한 수정들 및 대안적인 형태들을 허용하고, 그의 특정 실시예들은 도면들에서 예시적으로 도시되고, 본원에서 상세하게 설명될 것이다. 그러나, 도면들 및 그에 대한 상세한 설명은 발명을 개시된 특정 형태로 한정하도록 의도되지 않고, 반대로, 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명의 사상 및 범위 내에 있는 모든 수정들, 등가물들 및 대안들을 커버하도록 의도된다는 것을 이해해야 한다. 본원에 이용된 제목들은 오직 구성을 위한 것이고, 설명의 범위를 제한하는 데 이용되는 것을 의미하지 않는다. 본 출원에 걸쳐서 이용되는 바와 같이, "할 수 있다(may)"라는 단어는 의무적인 의미(즉, 해야 한다는 의미)보다는, 허용의 의미(즉, 가능성이 있다는 의미)에서 이용된다. 유사하게, "포함한다", "포함하는", 및 "포함하다"라는 단어들은, 포함하지만 그것으로 한정되지 않음을 의미한다.
다양한 유닛들, 회로들, 또는 다른 컴포넌트들은 태스크 또는 태스크들을 수행"하도록 구성되는"으로서 설명될 수 있다. 이러한 문맥에서, "하도록 구성되는"은 동작 동안 태스크 또는 태스크들을 수행"하는 회로를 갖는"을 일반적으로 의미하는 구조의 광의의 기재이다. 이와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on)이 아닐 때에도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "하도록 구성되는"에 대응하는 구조를 형성하는 회로는 동작을 구현하기 위해 실행 가능한 프로그램 명령어들을 저장하는 메모리 및/또는 하드웨어 회로들을 포함할 수 있다. 메모리는 정적 또는 동적 랜덤 액세스 메모리와 같은 휘발성 메모리 및/또는 광학적 또는 자기 디스크 저장소, 플래시 메모리, 프로그램 가능한 리드 온리 메모리들 등과 같은 불휘발성 메모리를 포함할 수 있다. 유사하게, 다양한 유닛/회로/컴포넌트는 설명의 편의를 위해 태스크 또는 태스크들을 수행하는 것으로서 설명될 수 있다. 이러한 설명은 "하도록 구성되는"이라는 구절을 포함하는 것으로서 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성되는 유닛/회로/컴포넌트를 기재하는 것은 그 유닛/회로/컴포넌트에 대해 35 U.S.C. §112, 패러그래프 식스 해석(paragraph six interpretation)을 호출하지 않도록 명백히 의도된다.
이제 도 1을 보면, 외부 메모리(12) 및 하나 이상의 플래시 메모리 디바이스들(28A-28B)에 결합되는 집적 회로(10)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 집적 회로(10)는 메모리 컨트롤러(14), 인터커넥트 패브릭(interconnect fabric)(16), 컴포넌트들(18A-18B)과 같은 주변장치 컴포넌트들의 세트, 플래시 메모리 인터페이스 유닛(30), 중앙(central) DMA(CDMA) 컨트롤러(20), 레벨 1(L1) 캐시(24)를 포함하는 프로세서(22), 레벨 2(L2) 캐시(26), 및 입출력(I/O) 프로세서(IOP)(32)를 포함한다. 메모리 컨트롤러(14)는 메모리(12)가 결합될 수 있는 메모리 인터페이스에 결합되고, 인터커넥트 패브릭(16)에 결합된다. CDMA 컨트롤러(20), L2 캐시(26), 및 프로세서(22)(L2 캐시(26)를 통함)는 또한 예시된 실시예에서 인터커넥트 패브릭(16)에 결합된다. L2 캐시(26)는 프로세서(22)에 결합되고, CDMA 컨트롤러(20)는 컴포넌트들(18A-18B), 플래시 메모리 인터페이스 유닛(30), 및 IOP(32)에 결합된다. 하나 이상의 주변장치 컴포넌트들(18A-18B)은 주변장치 컴포넌트(18A)와 같이, 외부 인터페이스들에도 결합될 수 있다. 다른 실시예들에서, 다른 컴포넌트들은 인터커넥트 패브릭(16)에 직접 결합될 수 있다(예를 들어, 다른 주변장치 컴포넌트들).
CDMA 컨트롤러(20)는 메모리(12), 다양한 주변장치 컴포넌트들(18A-18B), 및/또는 플래시 메모리 인터페이스 유닛(30) 사이의 DMA 동작들을 수행하도록 구성될 수 있다. 다양한 실시예들은 CDMA 컨트롤러(20)를 통해 결합되는 임의의 수의 주변장치 컴포넌트들 및/또는 플래시 메모리 인터페이스 유닛들(30)을 포함할 수 있다. 프로세서(22)(및 더욱 구체적으로, 프로세서(22)에 의해 실행되는 명령어들)는 DMA 동작들을 수행하도록 CDMA 컨트롤러(20)를 프로그램할 수 있다. 다양한 실시예들은 다양한 방식으로 CDMA 컨트롤러(20)를 프로그램할 수 있다. 예를 들어, 수행될 DMA 동작들을 기술하는 DMA 디스크립터들이 메모리(12)에 기입될 수 있고, CDMA 컨트롤러(20)는 메모리(12)에 DMA 디스크립터들을 배치하도록 프로그램 가능한 레지스터들을 포함할 수 있다. 복수의 디스크립터들은 DMA 채널을 위해 생성될 수 있고, 디스크립터들에 기술된 DMA 동작들은 특정된 바와 같이 수행될 수 있다. 대안적으로, CDMA 컨트롤러(20)는 수행될 DMA 동작들을 기술하도록 프로그램 가능한 레지스터들을 포함할 수 있고, CDMA 컨트롤러(20)를 프로그램하는 것은 레지스터들을 기입하는 것을 포함할 수 있다.
일반적으로, DMA 동작은 명령어들을 실행하는 프로세서와 별개로 하드웨어에 의해 수행되는 소스로부터 타겟으로의 데이터의 전송일 수 있다. 하드웨어는 프로세서에 의해 실행되는 명령어들을 이용하여 프로그램될 수 있지만, 전송 자체는 프로세서에서의 명령어 실행에 독립적인 하드웨어에 의해 수행된다. 소스 및 타겟 중 적어도 하나는 메모리일 수 있다. 일부 실시예들에서, 메모리는 시스템 메모리(예를 들어, 메모리(12)), 플래시 메모리 디바이스들(28A-28B)일 수 있거나, 집적 회로(10) 내의 내부 메모리일 수 있다. 일부 DMA 동작들은 소스 및 타겟으로서 메모리를 가질 수 있다(예를 들어, 메모리(12)와 플래시 메모리 디바이스들(28A-28B) 사이의 DMA 동작, 또는 메모리(12)의 하나의 블록으로부터 다른 블록으로의 복사 동작). 다른 DMA 동작들은 소스 또는 타겟으로서 주변장치 컴포넌트를 가질 수 있다. 주변장치 컴포넌트는 DMA 데이터가 전송될 또는 DMA 데이터가 수신될 외부 인터페이스에 결합될 수 있다. 예를 들어, 주변장치 컴포넌트(18A)는 DMA 데이터가 전송될 또는 DMA 데이터가 수신될 인터페이스에 결합될 수 있다. 따라서, DMA 동작은 소스로부터 데이터를 판독하고 목적지에 데이터를 기입하는 CDMA 컨트롤러(20)를 포함할 수 있다. 데이터는 DMA 동작의 부분으로서 CDMA 컨트롤러(20)를 통해 흐를 수 있다. 특히, 메모리(12)로부터의 DMA 판독에 대한 DMA 데이터는 메모리 컨트롤러(14)를 통해, 인터커넥트 패브릭(16)을 거쳐서, CDMA 컨트롤러(20)를 통해, 주변장치 컴포넌트(18A-18B) 또는 플래시 메모리 인터페이스 유닛(30)으로 (및 가능하게는 적용가능한 경우 주변장치 컴포넌트가 결합되는 인터페이스 상에) 흐를 수 있다. 메모리에의 DMA 기입에 대한 데이터는 반대 방향으로 흐를 수 있다.
일 실시예에서, 프로세서(22) 및/또는 IOP(32)에 의해 실행되는 명령어들은 또한 프로그램된 입출력(programmed input/output)(PIO) 동작들이라고 하는 판독 및/또는 기입 동작들을 이용하여 주변장치 컴포넌트들(18A-18B) 및 플래시 메모리 인터페이스 유닛(30)과 통신할 수 있다. PIO 동작들은 집적 회로(10)에 의해 주변장치 컴포넌트(18A-18B) 또는 플래시 메모리 인터페이스 유닛(30)에(및 더욱 구체적으로, 컴포넌트 내의 레지스터 또는 다른 판독 가능한/기입 가능한 리소스에) 맵핑되는 어드레스를 가질 수 있다. 어드레스 맵핑은 어드레스 공간에 고정될 수 있거나, 프로그램 가능할 수 있다. 대안적으로, PIO 동작은 메모리 판독/기입 동작들로부터 구별되는 방식으로 전송될 수 있다(예를 들어, 인터커넥트 패브릭(16) 상의 메모리 판독/기입 동작들과 상이한 커맨드 인코딩을 이용하여, 메모리 대 PIO를 표시하기 위한 측파대 신호 또는 제어 신호를 이용하여, 등등). PIO 전송은, 이러한 구현들을 위해, PIO 어드레스 공간 내의 주변장치 컴포넌트(18A-18B) 또는 플래시 메모리 인터페이스 유닛(30)(및 어드레싱된 리소스)을 식별할 수 있는, 어드레스를 여전히 포함할 수 있다. 어드레싱된 리소스는 구성 또는 제어 레지스터, 논리적 리소스(예를 들어, PIO는 커맨드로서 해석될 수 있다) 등과 같은 어드레싱된 컴포넌트/유닛 내의 임의의 리소스일 수 있다.
일 실시예에서, PIO 동작들은 CDMA 컨트롤러(20)와 동일한 인터커넥트를 이용할 수 있고, 주변장치 컴포넌트(18A-18B) 및 플래시 메모리 인터페이스 유닛(30)에 대하여, CDMA 컨트롤러(20)를 통해 흐를 수 있다. 따라서, PIO 동작은 프로세서(22)에 의해 (이 실시예에서, L2 캐시(26)를 통해) 인터커넥트 패브릭(16) 위로, CDMA 컨트롤러(20)에, 그리고 타겟된 주변장치 컴포넌트/플래시 메모리 인터페이스 유닛에 발행될 수 있다. 유사하게, IOP(32)는 CDMA 컨트롤러(20)에 PIO 동작들을 발행할 수 있고, CDMA 컨트롤러(20)는 동일한 인터커넥트를 거쳐 PIO 동작을 주변장치 컴포넌트(18A-18B) 또는 플래시 메모리 인터페이스 유닛(30)에 전송할 수 있다.
따라서, 주변장치 컴포넌트(18A-18B) 또는 플래시 메모리 인터페이스 유닛(30)으로/으로부터의 DMA 동작을 위한 데이터 전송은 동일한 주변장치 컴포넌트(18A-18B) 또는 플래시 메모리 인터페이스 유닛(30)으로/으로부터의 PIO 동작들과 충돌할 수 있다. 예를 들어, 플래시 메모리 인터페이스 유닛(30)은 플래시 메모리 디바이스들(28A-28B)로/로부터 메모리 전송들을 수행하도록 PIO 동작들을 통해 프로그램될 수 있다. 기입 동작들을 위해, CDMA 컨트롤러(20)는 플래시 메모리 인터페이스 유닛(30)에 기입될 데이터를 DMA할 수 있다. 판독 동작들을 위해, CDMA 컨트롤러(20)는 플래시 메모리 인터페이스 유닛(30)으로부터 판독될 데이터를 DMA할 수 있다. 실시예에서, 플래시 메모리 디바이스들(28A-28D)은 디바이스들로/로부터 데이터 전송의 페이지를 지원할 수 있다. 페이지의 사이즈는 디바이스에 의존적이고, 메모리(12)를 위한 가상-대-물리 어드레스 변환에 이용되는 페이지 사이즈와 동일하지 않을 수 있다. 예를 들어, 512 바이트, 2048 바이트, 및 4096 바이트의 페이지 사이즈들이 종종 이용된다. 따라서, 페이지는 이 문맥에서 메모리 디바이스에 대한 데이터의 전송의 단위일 수 있다.
플래시 메모리 인터페이스 유닛(30)은 데이터 전송의 페이지를 수행하도록 프로그램될 수 있고, CDMA 유닛(20)은 데이터를 전송하도록 DMA 동작들을 수행할 수 있다. 복수의 페이지들이 전송될 경우, 부가적인 PIO 동작들을 이용하여 플래시 메모리 인터페이스 유닛(30)이 다음 전송을 수행하도록 프로그램할 수 있다. 그러나, DMA 동작들은 현재의 페이지가 종료될 때까지 부가적인 PIO 동작들을 효과적으로 로크할 수 있다. 따라서, 다음 페이지에 대해 플래시 메모리 인터페이스 유닛(30)을 프로그램하는 동안 경과하는 시간은 플래시 메모리 디바이스들에 대한 인터페이스에서의 유휴 시간을 가져올 수 있다.
부가적으로, DMA 전송이 개시될 수 있고, 그러고 나서 더욱 높은 우선순위 데이터 전송이 IC(10)에서 필요로 할 수 있다. 예를 들어, 플래시 메모리 인터페이스 유닛(30)과 관련하여, 진행중인 DMA 전송은 애플리케이션에 의해 개시될 수 있고, 그러고 나서 오퍼레이팅 시스템은 페이지 결함을 충족시키기 위해서 플래시 메모리(28A-28B)에 데이터를 페이지 아웃(page out)하거나 플래시 메모리(28A-28B)로부터 데이터를 판독할 필요가 있을 수 있다. 대안적으로, 배경에서 실행하고 있는 애플리케이션은 DMA 전송을 시작했을 수 있고, 활발하게 이용되는(전경) 애플리케이션은 전송을 수행할 필요가 있을 수 있다. 다른 예에서, 애플리케이션들은 우선순위들을 할당받을 수 있다. 또 다른 예에서, IC(10) 내의 하드웨어는 플래시 메모리(28A-28B)에 대한 액세스를 요구할 수 있고, 소프트웨어 액세스보다 더욱 높은 우선순위일 수 있다.
일 실시예에서, 플래시 메모리 인터페이스 유닛(30)은 복수의 커맨드 큐들을 지원할 수 있다. 전송될 페이지들의 세트에 대해 플래시 메모리 인터페이스 유닛(30)을 프로그램하기 위한 커맨드들이 커맨드 큐들 중 하나에 큐잉될 수 있다. 일단 제1 페이지를 위한 DMA 동작들이 시작되면, 후속하는 페이지들에 대해 플래시 메모리 인터페이스 유닛(30)을 프로그램하기 위한 데이터는 이미 커맨드 큐에 저장될 수 있다. 따라서, 플래시 메모리 인터페이스 유닛(30)을 프로그램하기 위한 PIO 동작들과 데이터를 전송하기 위한 DMA 동작들 사이에 충돌이 존재하지 않을 수 있다. 플래시 메모리 디바이스들(28A-28B)에 대한 인터페이스 상의 활용은 CDMA 유닛(30)이 현재의 페이지에 대한 DMA 동작들을 완료하는 동안 전송될 다음 페이지에 대해 플래시 메모리 컨트롤러(30)를 구성하도록 커맨드 큐로부터의 커맨드들을 프로세싱하는 능력으로 인해 증가될 수 있다.
또한, 커맨드 큐들은 그것들과 연관된 우선순위를 가질 수 있다. 예를 들어, 2개의 큐들이 포함될 수 있다: 하나는 낮은 우선순위 큐일 수 있고, 다른 것은 높은 우선순위 큐일 수 있다. 플래시 메모리 인터페이스 유닛(30)은 프로세싱될 높은 우선순위 큐 내의 커맨드들이 존재하는 경우 낮은 우선순위 큐 내의 커맨드들의 프로세싱을 차단하도록 구성될 수 있다. 따라서, 더욱 높은 우선순위 전송은 더욱 낮은 우선순위 전송을 차단할 수 있다. 일 실시예에서, 낮은 우선순위 큐는 차단이 허용가능한 커맨드 스트림의 위치들을 식별하는 하나 이상의 표시들을 포함할 수 있다. 표시들은 커맨드들의 "양호한(good)" 곳에서(예를 들어, 페이지의 끝에서, 동기화 포인트에서, 등등) 차단이 일어나도록 보장할 수 있다. 즉, 높은 우선순위 큐에 커맨드들이 기입되는 시간에 낮은 우선순위 큐에서 일어나고 있었던 동작들은 완료될 수 있어, 그것들의 동작들은 높은 우선순위 프로세싱이 끝난 후에 다시 수행될 필요가 없다. 일 실시예에서, 큐들은 높은 우선순위 또는 낮은 우선순위로서 정적으로 할당될 수 있다. 다른 실시예들에서, 우선순위는 프로그램 가능할 수 있다.
실시예에서, 플래시 메모리 인터페이스 유닛(30)은 하나 이상의 매크로를 저장하기 위해 매크로 메모리를 지원할 수 있다. 매크로는 매크로 커맨드를 통해 호출될 수 있는 2개 이상의 커맨드의 시퀀스일 수 있다. 예를 들어, 매크로 커맨드는 커맨드 큐들 중 하나에 기입될 수 있고, 매크로 커맨드가 플래시 메모리 인터페이스 유닛(30)에 의해 수행될 때 매크로를 호출할 수 있다. 커맨드들의 자주 이용되는 시퀀스들을 구현하는 매크로들은 매크로 메모리에 다운로드될 수 있고, 따라서 더 적은 커맨드들이 후속하여 다운로드될 필요가 있다. 즉, 매크로 커맨드들은 매크로에 저장되는 커맨드들을 반복하여 기입하는 대신에 커맨드 큐에 기입될 수 있다. 일 실시예에서, 매크로 커맨드는 매크로의 시작 어드레스 및 매크로 내의 워드들의 수를 특정할 수 있다. 일단 워드의 수가 매크로로부터 판독되었고 대응하는 커맨드들이 수행되었다면, 매크로 커맨드 후의 대응하는 커맨드 큐 내의 다음 커맨드가 수행될 수 있다. 따라서, 매크로에서 리턴 커맨드들이 회피될 수 있어, 실시예에서 더욱 밀집한 매크로들을 허용할 수 있다. 다른 실시예들은 오퍼랜드들로서 시작 어드레스 및 커맨드의 수를 이용할 수 있다. 또 다른 실시예들은 리턴 커맨드를 구현할 수 있고, 오퍼랜드로서 시작 어드레스(그러나 워드/커맨드 카운트는 아님)를 포함할 수 있다. 실시예에서, 매크로 커맨드는 루프 카운트 오퍼랜드도 포함할 수 있다. 루프 카운트 오퍼랜드는 수행될 매크로의 반복의 수를 특정할 수 있다. 따라서, 매크로 커맨드를 수행하는 것은 매크로 커맨드 후에 커맨드 큐 내의 다음 커맨드를 진행하기 전에, 루프 카운트 횟수를 반복하여, 시작 어드레스에서 시작되는 워드들의 수를 판독하고 커맨드들을 수행하는 것을 포함할 수 있다.
매크로 메모리 내의 커맨드 큐들 및/또는 커맨드들의 커맨드들은 그것들의 동작을 제어하기 위해 오퍼랜드들을 이용할 수 있다. 일부 경우에, 오퍼랜드들은 대응하는 커맨드 큐에 저장될 수 있다. 다른 경우들에, 오퍼랜드들은 오퍼랜드 큐에 저장될 수 있다. 커맨드 큐 내 또는 매크로 메모리 내의 커맨드들은 플래시 메모리 인터페이스 유닛(30)이 오퍼랜드 큐로부터 오퍼랜드들을 로드하고 오퍼랜드들을 동작하는 것을 특정할 수 있다. 오퍼랜드 큐는 일반 매크로에 대해 사례 특정 데이터(instance-specific data)를 공급하기 위해 매크로와 이용될 수 있다(예를 들어, 플래시 메모리 어드레스들, 칩 인에이블들, 등등). 유사하게, 오퍼랜드 큐는 커맨드 큐 내의 커맨드들에 대한 오퍼랜드들을 공급할 수 있다.
본원에 이용되는 바와 같은 메모리 전송은 (메모리 디바이스에 대한 인터페이스를 통한) 메모리 디바이스로/로부터의 데이터의 전송을 가리킬 수 있다. 따라서, 플래시 메모리 디바이스들(28A-28B)로/로부터의 메모리 전송은 플래시 메모리 디바이스들(28A-28B)과 플래시 메모리 인터페이스 유닛(30) 사이의 인터페이스를 통해 일어날 수 있다. 유사하게, 메모리(12)로/로부터의 메모리 전송은 메모리(12)와 메모리 컨트롤러(14) 사이의 인터페이스를 통해 일어날 수 있다. 메모리 전송은 메모리 디바이스들에 의해 정의된 프로토콜을 이용하여 일어날 수 있다. 부가적으로, 커맨드는 하드웨어에 의해 수행될 특정 동작을 특정하는 것으로서 주변장치 컴포넌트(예를 들어, 플래시 메모리 인터페이스 유닛(30))의 하드웨어에 의해 해석되는 데이터의 하나 이상의 바이트를 가리킬 수 있다.
일반적으로, 주변장치 컴포넌트는 프로세서를 갖는 집적 회로(10) 상에 포함될 임의의 원하는 회로일 수 있다. 주변장치 컴포넌트는 집적 회로(10)의 다른 컴포넌트들이 주변장치 컴포넌트와 통신할 수 있는 정의된 기능 및 인터페이스를 가질 수 있다. 예를 들어, 주변장치 컴포넌트들은 디스플레이 컨트롤러들, 그래픽 프로세서들 등과 같은 비디오 컴포넌트들; 디지털 신호 프로세서들, 믹서들 등과 같은 오디오 컴포넌트들; 이더넷 미디어 액세스 컨트롤러(media access controller; MAC) 또는 무선 충실도(WiFi) 컨트롤러와 같은 네트워킹 컴포넌트들; USB(universal serial bus), PCI(peripheral component interconnect) 또는 PCI express(PCIe)와 같은 그의 변형들, SPI(serial peripheral interface), 플래시 메모리 인터페이스 등과 같은 다양한 인터페이스들에서 통신하기 위한 컨트롤러들을 포함할 수 있다. 플래시 메모리 인터페이스 유닛(30)은 주변장치 컴포넌트의 일 예일 수 있고, 본원에 설명된 주변장치 컴포넌트의 일반적인 속성들은 플래시 메모리 인터페이스 유닛(30)에 적용가능할 수 있다.
프로세서(22)는 임의의 명령어 세트 아키텍처(instruction set architecture)를 구현할 수 있고, 그 명령어 세트 아키텍처에 정의된 명령어들을 실행하도록 구성될 수 있다. 프로세서(22)는 스칼라, 수퍼스칼라(superscalar), 파이프라인, 수퍼파이프라인(superpipelined), 순서를 벗어나(out of order), 순서대로(in order), 추측에 근거한(speculative), 추측에 근거하지 않은(non-speculative), 등등, 또는 그의 조합들을 포함하는, 임의의 마이크로아키텍처(microarchitecture)를 이용할 수 있다. 프로세서(22)는 회로를 포함할 수 있고, 옵션으로 마이크로코딩(microcoding) 기법들을 구현할 수 있다. 예시된 실시예에서, 프로세서(22)는 프로세서(22)에 의해 이용하기 위한 데이터 및 명령어들을 저장하기 위해 L1 캐시(24)를 포함할 수 있다. 별개의 L1 데이터 및 명령어 캐시들이 존재할 수 있다. L1 캐시(들)는 임의의 용량 및 조직(세트 결합(set associative), 직접 맵핑, 등등)을 가질 수 있다. 예시된 실시예에서, L2 캐시(26)도 제공된다. L2 캐시(26)는 L1 캐시(들)와 유사하게, 임의의 용량 및 조직을 가질 수 있다.
유사하게, IOP(32)는 임의의 명령어 세트 아키텍처를 구현할 수 있고, 그 명령어 세트 아키텍처에 정의된 명령어들을 실행하도록 구성될 수 있다. IOP(32)에 의해 구현된 명령어 세트 아키텍처는 프로세서(22)에 의해 구현되는 동일한 명령어 세트 아키텍처일 필요는 없다. 일 실시예에서, IOP(32)는 프로세서(22)보다 더 낮은 전력, 더 낮은 성능 프로세서일 수 있다. IOP(32)는 다양한 I/O 인터페이스 이슈들을 핸들링할 수 있다(원하는 동작들을 수행하도록 주변장치 컴포넌트들을 구성하는 것, 특정 에러 핸들링, 등등). IOP(32)는 플래시 메모리 인터페이스 유닛(30) 내의 커맨드 큐에 커맨드들을 기입하기 위해, 플래시 메모리 인터페이스 유닛(30) 내의 매크로 메모리에 매크로들을 기입하기 위해, 및/또는 플래시 메모리 인터페이스 유닛(30) 내의 오퍼랜드 큐에 오퍼랜드들을 기입하기 위해 명령어들을 실행할 수 있다. IOP(32)는 또한 다른 주변장치 컴포넌트들(18A-18B)에 서비스하기 위해 명령어들을 실행할 수 있다. 따라서, 프로세서(22)는 다른 컴퓨팅 태스크들을 수행할 수 있거나, 수행될 다른 컴퓨팅 태스크들이 존재하지 않는 경우 전력을 보존하기 위해 파워 다운(power down)될 수 있다. IOP(32)는 스칼라, 수퍼스칼라, 파이프라인, 수퍼파이프라인, 순서를 벗어나, 순서대로, 추측에 근거한, 추측에 근거하지 않은, 등등, 또는 그의 조합들을 포함하는, 임의의 마이크로아키텍처를 이용할 수 있다. IOP(32)는 회로를 포함할 수 있고, 옵션으로 마이크로코딩 기법들을 구현할 수 있다.
인터커넥트 패브릭(16)은 메모리 컨트롤러(14), 프로세서(22)(L2 캐시(26)를 통함), L2 캐시(26), 및 CDMA 컨트롤러(20)가 통신할 수 있는 임의의 인터커넥트일 수 있다. 인터커넥트 패브릭(16)은 임의의 타입의 인터커넥트(예를 들어, 버스, 패킷 인터페이스, 점대점 링크들, 등등)를 구현할 수 있다. 일 실시예에서, 인터커넥트 패브릭(16)은 인터커넥트들의 계층일 수 있다. 예를 들어, 프로세서(22) 및 캐시들(24 및 26)은 일관성 포트(coherence port) 및 메모리 컨트롤러(14)에 대한 포트를 포함하는 "코어 콤플렉스(core complex)"로 구현될 수 있다. CDMA 컨트롤러(20)는 일관성 포트에 결합될 수 있다. 일부 실시예들에서, 메모리 컨트롤러(14)는 멀티 포팅(multi-ported)될 수 있다. 일부 이러한 실시예들에서, CDMA 컨트롤러(20)는 메모리 컨트롤러(14) 상의 별개의 포트에 결합될 수 있다. 다른 이러한 실시예들에서, CDMA 컨트롤러(20)는 또한 ACP 포트를 통해 결합될 수 있다.
메모리 컨트롤러(14)는 시스템 인터페이스 유닛(16)으로부터 메모리 요구들을 수신하도록 구성될 수 있다. 메모리 컨트롤러(14)는 부착된 메모리(12)에 대해 정의된 인터페이스를 이용하여 요구들을 완료하기 위해 메모리(12)에 액세스하도록 구성될 수 있다(기입 요구에 대해 메모리(12)에 수신된 데이터를 기입하는 것, 또는 판독 요구에 응답하여 메모리(12)로부터 데이터를 제공하는 것). 메모리 컨트롤러(14)는 DRAM(dynamic random access memory), SDRAM(synchronous DRAM), 더블 데이터 레이트(double data rate)(DDR, DDR2, DDR3, 등등) SDRAM, RAMBUS DRAM(RDRAM), 스태틱 RAM(SRAM) 등등과 같은 임의의 타입의 메모리(12)와 인터페이스하도록 구성될 수 있다. 메모리는 듀얼 인라인 메모리 모듈들(dual inline memory modules)(DIMMs), 싱글 인라인 메모리 모듈들(single inline memory modules)(SIMMs) 등등과 같은 복수의 메모리 뱅크로서 배열될 수 있다. 일 실시예에서, 하나 이상의 메모리 칩들이 POP(package on package) 또는 COC(chip-on-chip) 구성으로 집적 회로(10)에 부착된다.
메모리(12)는 하나 이상의 메모리 디바이스들을 포함할 수 있다. 일반적으로, 메모리 디바이스는 기입 동작에서 데이터와 제공되는 어드레스에 따라 데이터를 저장하고, 어드레스가 판독 동작에서 이용될 때 그 데이터를 공급하도록 설계되는 임의의 컴포넌트일 수 있다. 위에 언급된 메모리 타입들의 예들 중 임의의 것은 메모리 디바이스에 구현될 수 있고, 플래시 메모리 디바이스들(28A-28B)은 또한 메모리 디바이스들일 수 있다. 메모리 디바이스는 칩, 인쇄 회로 기판과 같은 기판에 접속된 복수의 칩들(예를 들어, SIMM 또는 DIMM, 또는 IC(10)가 결합되는 회로 기판에 직접 접속), 등등일 수 있다.
플래시 메모리 인터페이스 유닛(30)은 플래시 메모리 디바이스들(28A-28B)에 대한 판독 및 기입 요구들을 수신하도록 구성되고, 판독/기입 요구들을 완료하기 위해 플래시 메모리 디바이스들(28A-28B)에 인터페이스하도록 구성되는 회로를 포함할 수 있다. 일 실시예에서, 판독/기입 요구들은 CDMA 컨트롤러(20)로부터 소싱될(sourced) 수 있다. 플래시 메모리 인터페이스 유닛(30)은 (예를 들어, PIO 동작들을 통해) 플래시 메모리 디바이스들(28A-28B)로/로부터 메모리 전송들을 수행하도록 하나 이상의 제어 레지스터(아래 설명되는 도 2 참조)를 통해 프로그램 가능할 수 있다. 플래시 메모리 디바이스들(28A-28B)은 플래시 메모리, 이 기술분야에 알려진 불휘발성 메모리의 타입일 수 있다. 다른 실시예들에서, 다른 형태의 불휘발성 메모리가 이용될 수 있다. 예를 들어, 배터리 백(battery-backed) SRAM, EEPROM(electrically-erasable programmable ROM)과 같은 다양한 타입의 프로그램 가능 ROM, 등등이 이용될 수 있다. 또 다른 실시예들에서, 휘발성 메모리가 메모리(12)와 유사하게 이용될 수 있다.
본 실시예는 플래시 메모리 인터페이스 유닛(30)에서 커맨드 큐들(FIFO), 매크로 메모리, 및/또는 오퍼랜드 큐(FIFO)를 이용하여 설명하지만, 다른 실시예들은 임의의 타입의 메모리 또는 주변장치 인터페이스에 의해, 임의의 주변장치 컴포넌트에서 특징들을 구현할 수 있다.
다른 실시예들은 도 1에 도시된 컴포넌트들 및/또는 다른 컴포넌트들의 서브세트들 또는 수퍼세트들을 포함하는 컴포넌트들의 다른 조합들을 포함할 수 있다는 것에 주목한다. 주어진 컴포넌트들의 하나의 사례가 도 1에 도시될 수 있지만, 다른 실시예들은 주어진 컴포넌트의 하나 이상의 사례를 포함할 수 있다.
이제 도 2를 보면, 플래시 메모리 인터페이스 유닛(30)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 플래시 메모리 인터페이스 유닛(30)은 낮은 우선순위(low priority; LP) 커맨드 FIFO(40), 높은 우선순위(high priority; HP) 커맨드 큐(41), 플래시 메모리 인터페이스(flash memory interface; FMI) 제어 회로(42), 매크로 메모리(44), 오퍼랜드 FIFO(46), 플래시 메모리 컨트롤러(flash memory controller; FMC)(48), 레지스터(51)를 포함하는 FMC 제어 레지스터들(50)의 세트, 데이터 버퍼들(52A-52B), 및 에러 검사/정정(error checking/correction; ECC) 유닛(54)을 포함한다. 커맨드 FIFO들(40 및 41), FMI 제어 회로(42), 매크로 메모리(44), 오퍼랜드 FIFO(46), 및 버퍼들(52A-52B)은 모두 CDMA 컨트롤러(20)에 대한 내부 인터페이스에 결합된다. FMI 제어 회로(42)는 또한 커맨드 FIFO들(40 및 41), 매크로 메모리(44), 오퍼랜드 FIFO(46), 및 FMC 제어 레지스터들(50)에 결합된다. FMC 제어 레지스터들(50)은 또한 플래시 메모리 디바이스들에 대한 외부 인터페이스에 결합되는, FMC(48)에 결합된다. FMC(48)는 또한 버퍼들(52A-52B)에 결합된다. ECC 유닛(54)은 또한 버퍼들(52A-52B)에 결합된다.
FMI 제어 회로(42)는 CDMA 컨트롤러(20)로부터 PIO 동작들을 수신하도록 구성될 수 있다. 일부 PIO 동작들은 커맨드 FIFO들(40 및 41), 매크로 메모리(44), 또는 오퍼랜드 FIFO(46)로 향해질 수 있다. 예를 들어, 커맨드 FIFO들(40 또는 41) 내로 커맨드들을 기입하거나, 매크로 메모리(44) 내로 매크로들을 다운로드하거나, 오퍼랜드 FIFO(46) 내로 오퍼랜드들을 기입하기 위해 PIO 기입들이 이용될 수 있다. 어드레스들은 원하는 리소스를 어드레싱하기 위해 PIO 오퍼랜드들에서 이용될 수 있는, FIFO들(40 및 41), 매크로 메모리(44), 및 오퍼랜드 FIFO(46)의 각각에 할당될 수 있다. 예를 들어, FIFO들(40, 41, 및 46)은 그것들이 선입선출 방식으로 동작할 수 있기 때문에 단일 할당 어드레스를 가질 수 있다. 어드레스에 대한 PIO 기입은 FMI 제어 회로(42)가 FIFO들(40, 41, 또는 46)에 다음 오픈 엔트리(next open entry)에서 기입으로 제공되는 데이터를 저장하도록 할 수 있다. 즉, 데이터는 FIFO들(40, 41, 또는 46)의 꼬리에 첨부될 수 있고, 커맨드들 또는 오퍼랜드들은 FIFO들(40, 41, 또는 46)의 머리로부터 제거된다. 매크로 메모리(44)는 그것에 할당된 어드레스들의 범위, 예를 들어, 매크로 메모리(44)의 워드당 어드레스(address per word)를 가질 수 있다. 어드레스들에 대한 PIO 기입들은 매크로 메모리(44)의 어드레싱된 워드 내로 제공된 데이터 워드를 저장할 수 있다.
FMI 제어 회로(42)는 FMC(48)가 플래시 메모리 디바이스들(28A-28B)로/로부터의 특정 메모리 전송을 수행하도록 다양한 FMC 제어 레지스터들(50)을 프로그램하기 위해 커맨드 FIFO들(40 또는 41) 내의 커맨드들을 프로세싱할 수 있다. 일 실시예에서, FMC(48)는 어드레스, 칩 인에이블들, 전송 커맨드들 등을 포함하는, FMC 제어 레지스터들(50)을 통해 비교적 낮은 레벨의 제어를 수신하도록 구성된다. 커맨드 FIFO들(40 및 41) 내의 커맨드들은 FMI 제어 회로(42)에 의해 해석될 수 있고, 대응하는 FMC 제어 레지스터들(50)은 FMI 제어 회로(42)에 의해 기입될 수 있다. 유사하게, 이벤트를 기다리기 위한 커맨드들은 이벤트를 검출하기 위해 하나 이상의 FMC 제어 레지스터들(50)을 판독하기 위해 FMI 제어 회로(42)에 의해 해석될 수 있다. 커맨드들에 응답하여 FMI 제어 회로(42)에 의해 구동될 수 있고 및/또는 커맨드들에 응답하여 FMI 제어 회로(42)에 의해 모니터될 수 있는 일부 실시예들에서(도 2에 도시되지 않음), FMI 제어 회로(42) 내지 FMC(48) 사이의 직접 제어 신호들도 존재할 수 있다.
FMI 제어 회로(42)는 커맨드 FIFO들(40 또는 41)로부터 그 FIFO에 기입된 순서로 커맨드들을 판독하도록 구성될 수 있다. 더욱 일반적으로, 커맨드 큐들이 지원될 수 있다(예를 들어, 커맨드 FIFO들(40 및 41)은 큐들 내의 각각의 엔트리가 FMI 제어 회로(42)에 동시에 보일 수 있도록, FIFO들로서 구체적으로 구성되지 않을 수 있다). 유사하게, 오퍼랜드 FIFO(46)는 오퍼랜드 큐일 수 있고, FMI 제어 회로(42)는 오퍼랜드들이 기입된 순서로 커맨드 큐 또는 매크로 메모리(44) 내의 커맨드들에 응답하여 오퍼랜드 FIFO(46)로부터 오퍼랜드들을 판독할 수 있다.
두 FIFO들(40 및 41)이 비어 있고, 그 다음에 커맨드들이 LP 커맨드 FIFO(40)에 기입되는 경우, FMI 제어 회로(42)는 LP 커맨드 FIFO(40)로부터 커맨드들을 판독하고 커맨드들을 수행할 수 있다. FMI 제어 회로(42)가 LP 커맨드 FIFO(40)로부터 커맨드들을 프로세싱하고 있는 동안 커맨드들이 HP FIFO(41)에 기입되는 경우, FMI 제어 회로(42)는 FIFO(41)로부터 커맨드들의 프로세싱을 시작하기 위해 FIFO(40)로부터의 커맨드들의 프로세싱을 차단할 포인트를 결정할 수 있다. 도 2에서, LP 커맨드 FIFO(40) 내의 몇개의 엔트리들이 이 실시예를 위해 예시된다. 이 실시예에서, LP 커맨드 FIFO(40) 내의 각각의 엔트리는 일드 비트(yield bit)("Y")와 함께, 커맨드에 대한 저장을 포함할 수 있다. 일드 비트가 주어진 커맨드에 대해 설정되면, 커맨드들의 프로세싱은 주어진 커맨드가 프로세싱된 후에 차단될 수 있다. 일드 비트가 클리어(clear)이면, 프로세싱은 차단되지 않을 수 있다. 일드 비트들은 LP 커맨드 FIFO(40)에 대한 PIO 기입들을 위한 PIO 데이터의 부분일 수 있다. 다른 실시예들에서, 다른 표시들이 이용될 수 있다(예를 들어, 설정 및 클리어 상태들에 대한 반대의 의미들을 갖는 비트, 멀티비트 값들, 등등). 또한, 다른 실시예들은 차단성을 표시하기 위해 FIFO(40) 내의 별개의 커맨드를 이용할 수 있다. 즉, 그러한 커맨드들이 존재하는 경우, 그의 동작이 FMI 제어 회로(42)가 FIFO(41)로부터의 커맨드들을 프로세싱하기 위해 FIFO(40)로부터의 프로세싱을 차단할 수 있게 하는, 커맨드가 정의될 수 있다. 어떠한 커맨드들도 FIFO(41)에서의 프로세싱을 기다리고 있지 않은 경우, FIFO(40)에서의 프로세싱은 다음 커맨드를 계속할 수 있다.
HP 커맨드 FIFO(41) 내의 커맨드들을 프로세싱하기 위해 LP 커맨드 FIFO(40) 내의 커맨드들의 프로세싱을 차단하는 것에 응답하여, FMI 제어 회로(42)는 이 실시예에서 레지스터(51)에 HPE 비트를 설정하도록 구성될 수 있다. 일단 HPE 비트가 설정되면, FMI 제어 회로(42)는 만약에 있다면, HP 커맨드 FIFO(41)로부터의 커맨드들을 프로세싱하도록 구성될 수 있지만, HPE 비트가 클리어될 때까지 LP 커맨드 FIFO(40)로부터의 커맨드들을 프로세싱하지 않을 수 있다. FMI 제어 회로(42)는 HPE 비트를 클리어하지 않을 수 있고, 오히려 소프트웨어가 레지스터(51)를 기입하는 것에 의해 그렇게 할 수 있다. 이러한 방식으로, FMI 제어 회로(42)가 (예를 들어, 소프트웨어의 차단, 플래시 메모리 인터페이스 유닛(30)에 커맨드들을 전송함에 있어서의 지연들, 등등으로 인해) 소프트웨어가 커맨드 FIFO(41)를 채우는 것을 끝마치기 전에 HP 커맨드 FIFO(41)를 비우는 경우, FMI 제어 회로(42)는 LP 커맨드 FIFO(40)로부터의 커맨드들의 프로세싱으로 일찍 리턴하지 않을 수 있다. 부가적으로, 일단 커맨드들의 높은 우선순위 시퀀스가 완료되면, 소프트웨어는 커맨드들의 낮은 우선순위 시퀀스가 차단된 곳을 결정하기 위해 LP 커맨드 FIFO(40)를 판독할 수 있다.
일부 실시예들에서, 소프트웨어는 또한 HPE 비트를 설정하기 위해 레지스터(51)를 기입할 수 있다. 그렇게 하는 것은 FMI 제어 회로(42)가 (Y 비트에 의해 표시된 바와 같이) 다음 경계에서 LP 커맨드 FIFO(40)의 프로세싱을 차단하도록 할 수 있다. 이러한 동작은 소프트웨어가 LP 커맨드 FIFO(40)의 프로세싱을 중단하도록 할 수 있고, 소프트웨어가 LP 커맨드 FIFO(40)의 상태를 검사하도록 할 수 있다. 유사하게, 소프트웨어는 HP 커맨드 FIFO(41)에 대기 커맨드(또는 플래시 메모리 인터페이스(30) 또는 제어 레지스터들(50)의 구성에 대한 어떠한 변경도 일으키지 않는 다른 커맨드)를 기입할 수 있고, 이것은 FMI 제어 회로(42)가 적절한 포인트에서 LP 커맨드 FIFO(40)로부터의 커맨드들의 프로세싱을 차단하도록 할 수 있다.
앞서 언급한 바와 같이, 매크로 커맨드는 커맨드 FIFO들(40 또는 41) 중 하나에 있을 수 있고, FMI 제어 회로(42)는 매크로 커맨드에 응답하여 매크로 메모리(44)로부터 커맨드들을 수행할 수 있다. 다른 실시예들에서, 매크로 커맨드는 FMI 제어 회로(42)에 PIO 동작으로서 전송될 수 있다. 또 다른 실시예들에서, 매크로 커맨드들은 커맨드 FIFO들(40 또는 41)에서, 또는 PIO 동작들에서, 만나게 될 수 있다(encountered). 매크로 커맨드는 매크로 메모리의 시작 어드레스 및 매크로 메모리(44)로부터 판독할 워드들의 수를 표시하는 워드 카운트를 포함할 수 있다. FMI 제어 회로(42)는 대응하는 커맨드 FIFO(40 또는 41)에서 다음 커맨드(매크로 커맨드를 뒤따르는)를 판독하기 전에 매크로에서 커맨드들을 수행할 수 있다. 매크로의 워드들은 일 실시예에서 커맨드들에 부가하여 오퍼랜드들을 포함할 수 있다. 다른 실시예들은 워드 카운트보다는 커맨드 카운트를 이용할 수 있다. 위에서 언급한 바와 같이, 매크로 커맨드는 또한 루프 카운트를 포함할 수 있고, 매크로는 루프 카운트에 의해 표시되는 횟수 반복될 수 있다.
커맨드 FIFO(40 및 41)로부터, 및 오퍼랜드 FIFO(46)로부터, 워드들을 판독하는 것은 FIFO로부터 그것들의 워드들을 삭제하는 FMI 제어 회로(42)를 포함할 수 있다. 매크로 메모리(44)로부터 워드들을 판독하는 것은, 한편, 매크로들이 반복하여 수행될 수 있도록 워드들을 삭제하는 것을 수반하지 않을 수 있다.
FMC(48)는 FMC 제어 레지스터들(50)의 내용에 응답하여 메모리 전송들을 수행할 수 있어, 플래시 메모리 디바이스들(28A-28B)로부터 판독된 데이터를 버퍼들(52A-52B)에 기입하거나 또는 버퍼들(52A-52B)로부터 판독된 데이터를 플래시 메모리 디바이스들(28A-28B)에 기입할 수 있다. 버퍼들(52A-52B)은, 버퍼들(52A-52B) 중 하나가 다른 것이 드레인(drain)되고 있는 동안 데이터로 채워지고 있는, 핑퐁(ping-pong) 방식으로 이용될 수 있다. 예를 들어, 플래시 메모리 디바이스들(28A-28B)로부터의 판독들은 다른 버퍼(52A-52B)가 메모리(12)에 대한 DMA 동작들을 수행하는 CDMA 컨트롤러(20)에 의해 드레인되고 있는 동안 버퍼들(52A-52B) 중 하나를 채우는 FMC(48)를 포함할 수 있다. 플래시 메모리 디바이스들(28A-28B)에 대한 기입들은 FMC(48)가 다른 버퍼(52A-52B)를 드레인하는 동안 버퍼들(52A-52B) 중 하나를 데이터로 채우는 CDMA 컨트롤러(20)를 포함할 수 있다. ECC 유닛(54)은 플래시 메모리 디바이스들(28A-28B)에 대한 기입들을 위한 ECC 데이터를 발생할 수 있고, 플래시 메모리 디바이스들(28A-28B)로부터의 판독들을 위한 ECC 데이터를 검사할 수 있다.
이제 도 3을 보면, CDMA 컨트롤러(20)로부터 PIO 동작을 수신하는 것에 응답하여 FMI 제어 회로(42)의 일 실시예의 동작을 예시하는 흐름도가 도시된다. 블록들은 이해의 용이성을 위해 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 FMI 제어 회로(42) 내의 결합 로직에서 병렬로 수행될 수 있다. 예를 들어, 도 3에 예시된 결정 블록들은 독립적일 수 있고, 병렬로 수행될 수 있다. 블록들, 블록들의 결합들, 및/또는 전체 흐름도는 복수의 클록 사이클에 걸쳐서 파이프라인될 수 있다. FMI 제어 회로(42)는 도 3에 예시된 동작을 구현하도록 구성될 수 있다.
PIO 기입이 LP 커맨드 FIFO(40)에 어드레싱되는 경우(결정 블록(60), "예" 레그), FMI 제어 회로(42)는 LP 커맨드 FIFO(40) 내의 다음 엔트리를 PIO 기입으로부터의 데이터로 갱신하도록 구성될 수 있다(블록 62). 즉, PIO 기입으로부터의 데이터는 LP 커맨드 FIFO(40)의 꼬리에 첨부될 수 있다. 위에서 언급한 바와 같이, 이 실시예에서의 PIO 데이터는 커맨드 및 일드 비트일 수 있다. PIO 기입이 HP 커맨드 FIFO(41)에 어드레싱되는 경우(결정 블록(61), "예" 레그), FMI 제어 회로(42)는 HP 커맨드 FIFO(41) 내의 다음 엔트리를 PIO 기입으로부터의 데이터로 갱신하도록 구성될 수 있다(블록 63). 즉, PIO 기입으로부터의 데이터는 HP 커맨드 FIFO(41)의 꼬리에 첨부될 수 있다. 위에서 언급한 바와 같이, 이 실시예에서의 PIO 데이터는 커맨드일 수 있다. PIO 기입이 매크로 메모리(44)에 어드레싱되는 경우(결정 블록(64), "예" 레그), FMI 제어 회로(42)는 매크로 메모리(44) 내의 어드레싱된 엔트리를 PIO 기입으로부터의 데이터로 갱신하도록 구성될 수 있다(블록 66). PIO 기입이 오퍼랜드 FIFO(46)에 어드레싱되는 경우(결정 블록(68), "예" 레그), FMI 제어 회로(42)는 오퍼랜드 FIFO(46) 내의 다음 엔트리를 PIO 기입으로부터의 데이터로 갱신하도록 구성될 수 있다(블록 70). 즉, PIO 기입으로부터의 데이터는 오퍼랜드 FIFO(46)의 꼬리에 첨부될 수 있다. PIO 기입이 FMC 제어 레지스터들(50) 내의 레지스터에 어드레싱되는 경우(또는 다양한 실시예들에서, 플래시 메모리 인터페이스 유닛(30) 내의 다른 레지스터들 - 결정 블록(72), "예" 레그), FMI 제어 회로(42)는 어드레스 레지스터를 갱신하도록 구성될 수 있다(블록 74).
다음으로 도 4를 보면, 플래시 메모리 인터페이스 유닛(30), 및 더욱 구체적으로 FMI 제어 회로(42)의 일 실시예에 의해 지원될 수 있는 예시적인 커맨드 세트를 예시하는 표(76)가 도시된다. 다른 실시예들은 도 4에 도시된 커맨드들의 서브세트들, 커맨드들 및 다른 커맨드들의 서브세트들, 및/또는 커맨드들 및 다른 커맨드들의 수퍼세트들을 포함하는, 임의의 다른 세트의 커맨드들을 지원할 수 있다. 표는 각각의 커맨드를 열거하는 "커맨드" 컬럼, 주어진 커맨드에 대한 오퍼랜드들을 표시하는 "오퍼랜드들" 컬럼, 및 커맨드에 의해 점유되는 커맨드 FIFO들(40 또는 41) 내의 워드들의 수를 표시하는 "워드" 컬럼을 포함한다.
커맨드들의 포맷은 실시예마다 다를 수 있다. 예를 들어, 일 실시예에서, 각각의 커맨드는 커맨드 세트 내의 커맨드를 식별하는 오피코드 바이트(opcode byte)를 포함할 수 있다(즉, 표(76) 내의 각각의 엔트리는 상이한 오피코드 인코딩을 통해 식별될 수 있다). 커맨드를 형성하는 워드 또는 워드들 내의 남아있는 바이트들은 커맨드에 대해 오퍼랜드들을 특정하는 데 이용될 수 있다. 다양한 실시예들에서, 커맨드들은 커맨드 FIFO들(40 또는 41), 또는 매크로 메모리(44)에 저장될 수 있다.
어드레스 커맨드들(표(76)에서의 addr0 내지 addr7)은 플래시 메모리 디바이스들(28A-28B)에 대한 인터페이스(더욱 간결하게 플래시 메모리 인터페이스라고 함)에 어드레스 바이트들을 발행하는 데 이용될 수 있다. "addr" 다음의 숫자는 전송된 어드레스 바이트들의 수를 표시하고, 플래시 메모리 인터페이스 상의 어드레스의 바이트 0으로 시작한다. 일 실시예에서, FMI 제어 회로(42)는 다음 커맨드를 수행하기 전에 어드레스 바이트들이 전송될 때까지 일시정지하도록 구성될 수 있다. addrX 커맨드들은 다음의 FMC 제어 레지스터들(50)을, 일 실시예에서, 하나 이상의 어드레스 레지스터들을 어드레스 바이트들로 프로그래밍하는 것, 및 하나 이상의 레지스터들에 전송 번호 및 판독/기입 모드를 프로그래밍하는 것과 등가일 수 있다. 판독/기입 모드에 응답하여, FMC(48)는 플래시 메모리 인터페이스에서 어드레스 바이트들을 전송할 수 있고, FMC 제어 레지스터들(50) 내의 상태 레지스터에서 어드레스 완료 인터럽트(address done interrupt)를 시그널링할 수 있다. 부가적으로, addrX 커맨드들은 상태 레지스터 내의 어드레스 완료 인터럽트를 대기하고 클리어하는 것을 더 포함할 수 있다. addr0 커맨드는 어드레스 레지스터들 및 어드레스 전송 번호 레지스터가 프로그램되어 있지 않다는 점에서 addr1 내지 addr7 커맨드들과 상이할 수 있다. 대신, 이들 레지스터들은 아래 설명되는 load_next_word 또는 load_from_fifo 커맨드들과 같은 다른 커맨드들을 이용하여 미리 프로그램될 수 있다.
cmd 커맨드는 플래시 메모리 인터페이스에서 플래시 메모리 인터페이스 커맨드를 전송하는 데 이용될 수 있다. 일 실시예에서, 플래시 메모리 인터페이스 커맨드들은 1 바이트이다. 따라서, cmd 커맨드의 오퍼랜드는 커맨드 바이트일 수 있고 플래시 메모리 인터페이스에서 전송될 수 있다. FMI 제어 회로(42)는 플래시 메모리 인터페이스에서 cmd 커맨드가 완료될 때까지 일시정지하도록 구성될 수 있다. cmd 커맨드는 커맨드 바이트로 FMC 제어 레지스터들(50) 내의 커맨드 레지스터를 프로그래밍하는 것; 다른 FMC 제어 레지스터(50)에 커맨드 모드 비트를 설정하는 것; 및 FMC 제어 레지스터들(50) 내의 상태 레지스터의 cmd 완료 인터럽트를 대기하고 클리어하는 것과 등가일 수 있다. 커맨드 모드 비트의 설정에 응답하여, FMC(48)는 플래시 메모리 인터페이스에서 커맨드 바이트를 전송하도록 구성될 수 있고, 상태 레지스터에 cmd 완료 인터럽트를 기입할 수 있다.
enable_chip 커맨드는 FMC 제어 레지스터들(50)의 칩 인에이블 레지스터를 기입하는 데 이용될 수 있고, 이것은 FMC(48)가 칩 인에이블 오퍼랜드에 기초하여 플래시 메모리 인터페이스 상의 칩 인에이블 신호들을 구동하도록 할 수 있다.
xfer_page 커맨드는 플래시 메모리 디바이스들(28A-28B)로/로부터의 페이지 전송을 개시하는 데 이용될 수 있다. xfer_page 커맨드에 응답하여, FMI 제어 회로(42)는 FMC 제어 레지스터(50)에 시작 비트를 설정하고 다른 FMC 제어 레지스터(50)에 페이지 완료 인터럽트를 대기하고 클리어하도록 구성될 수 있다. 시작 비트에 응답하여, FMC(48)는 특정된 페이지 전송을 수행하고, 완료시에 페이지 완료 인터럽트를 설정하도록 구성될 수 있다.
FMI 제어 회로(42)에 의해 지원되는 다양한 동기화 커맨드가 존재할 수 있다. 일반적으로, 동기화 커맨드는 FMI 제어 회로(42)가 모니터할 이벤트를 특정하는 데 이용될 수 있고, FMI 제어 회로(42)가 다음 커맨드를 수행하기 전에 일어날 이벤트를 대기(즉, FMI 제어 회로(42)가 이벤트를 검출할 때까지 대기)하도록 할 수 있다. 따라서, 동기화 커맨드들은 커맨드들의 시퀀스들이 미리 프로그램될 수 있게 할 수 있고, 동기화 커맨드들은 정확한 타이밍을 보장하는 데 도움을 줄 수 있다. 예를 들어, 복수의 페이지 전송들이 미리 프로그램될 수 있고, 동기화 커맨드들은 레지스터들이 더 이상 현재의 페이지에 대해 필요하지 않을 때까지(예를 들어, 페이지로부터의 마지막 데이터가 판독을 위해 버퍼(52A-52B) 내로 로드된 후에) 다음 페이지에 대해 FMC 제어 레지스터들(50)의 프로그래밍을 지연시키는 데 이용될 수 있다.
도 4의 실시예에서, 동기화 커맨드들은 wait_for_rdy, pause, timed_wait, 및 wait_for_int를 포함할 수 있다. wait_for_rdy 커맨드는 페이지 전송 중에 플래시 메모리 디바이스들(28A-28B)의 상태를 모니터하는 데 이용될 수 있다. wait_for_rdy 커맨드는 FMC 제어 레지스터들(50)의 상태 레지스터에서 특정 "완료" 인터럽트(예를 들어, 페이지 완료)를 대기하고 클리어하는 것; 상태 레지스터 내의 상태 바이트를 마스크 오퍼랜드로 마스크하는 것; 및 마스킹된 상태 바이트와 상태 오퍼랜드를 비교하는 것을 포함할 수 있다. 마스킹된 상태 바이트가 상태 오퍼랜드와 매칭하는 경우, FMI 제어 회로(42)는 다음 커맨드를 수행하도록 구성될 수 있다. 그렇지 않으면, FMI 제어 회로(42)는 (예를 들어, 다양한 실시예들에서, IOP(32) 또는 프로세서(22)로) 인터럽트를 시그널링할 수 있고, IOP(32)/프로세서(22)가 인터럽트를 서비스할 때까지 부가적인 커맨드들의 수행을 중단할 수 있다.
pause 커맨드는 FMI 제어 회로(42)에 의한 커맨드 수행을 일시정지하는 데 이용될 수 있다. FMI 제어 회로(42)는 FMC 제어 레지스터들(50) 중 하나에 특정된 인에이블 비트를 기입하는 IOP(32)/프로세서(22)에서 실행되는 소프트웨어에 의해 구체적으로 재개될 때까지 커맨드들의 수행을 중단할 수 있다.
FMI 제어 회로(42)는 timed_wait 커맨드를 통해 클록 사이클 수 후에 일시정지 및 재개하도록 구성될 수 있다. 클록 사이클 수는 timed_wait 커맨드의 오퍼랜드로서 특정된다. 일부 실시예들에서, timed_wait 커맨드는 플래시 메모리 인터페이스 유닛(30)의 속도를 낮추는 데 이용될 수 있는데, 그 이유는 커맨드 FIFO(40), 매크로 메모리(44), 및 오퍼랜드 FIFO(46)를 이용하여 가능한 성능은 플래시 메모리 디바이스들(28A-28B)에 의해 액티비티들이 수행될 수 있는 레이트를 초과할 수 있기 때문이다.
wait_for_int 커맨드는 FMI 제어 회로(42)가 특정된 인터럽트 값을 대기하도록 하는 데 이용될 수 있다. 오퍼랜드들은 "비트" 오퍼랜드를 이용하여, 대기될 인터럽트(irq), 및 대기(예를 들어, 설정 또는 클리어)될 irq 비트의 상태를 특정할 수 있다.
send_interrupt 커맨드는 IOP(32) 또는 프로세서(22)에 특정된 인터럽트를 전송하는 데 이용될 수 있다. send_interrupt 커맨드의 오퍼랜드는 인터럽트가 전송되도록 할 수 있는, FMC 제어 레지스터들(50)의 인터럽트 코드 레지스터 내로 기입할 인터럽트 코드를 특정할 수 있다.
load_next_word 및 load_from_fifo 커맨드들은 FMC 제어 레지스터들(50)의 다양한 레지스터들을 프로그램하는 데 이용될 수 있다. 이들 커맨드들의 오퍼랜드들 중 하나는 기입될 제어 레지스터의 레지스터 어드레스이다. load_next_word 커맨드에 응답하여, FMI 제어 회로(42)는 커맨드 FIFO(40)로부터 다음 워드를 판독하고 어드레싱된 레지스터에 워드를 기입할 수 있다. load_from_fifo 커맨드에 응답하여, FMI 제어 회로(42)는 오퍼랜드 FIFO(46)의 머리에 있는 워드를 판독하고 어드레싱된 레지스터에 워드를 기입하도록 구성될 수 있다.
매크로 커맨드는 FMI 제어 회로(42)가 매크로 메모리(44)로부터 커맨드들을 판독하도록 하는 데 이용될 수 있다. 매크로 커맨드는 어드레스 오퍼랜드, 길이 오퍼랜드, 및 루프 카운트 오퍼랜드를 포함한다. 어드레스는 매크로 메모리(44)로부터 판독될 제1 워드를 식별할 수 있고, 길이는 (예를 들어, 커맨드들의 수 또는 워드들의 수에 관하여) 매크로의 길이를 식별할 수 있다. 일 실시예에서, 길이는 워드들의 수이다. 루프 카운트는 수행될 매크로의 반복의 수를 표시할 수 있다. 일 실시예에서, 루프 카운트 오퍼랜드는 반복들의 수보다 하나 작을 수 있다(예를 들어, 0의 루프 카운트는 1 반복이고, 1의 루프 카운트는 2 반복이고, 등등이다). 일단 매크로가 완료하면, 다음 커맨드 FIFO(42)는 판독될 수 있다(즉, 매크로에 리턴 커맨드가 존재하지 않을 수 있다).
폴(poll) 커맨드는 (마스크 필드를 이용하여 레지스터로부터 판독된 값을 마스킹한 후에) 특정된 값에 대해 FMC 제어 레지스터들(50) 내의 임의의 레지스터를 폴링하는 것일 수 있다. FMI 제어 회로(42)는 특정된 값이 검출될 때까지 레지스터를 폴링하고 나서 다음 커맨드로 진행할 수 있다.
위의 설명에서 언급한 바와 같이, FMI 제어 회로(42)는 특정 커맨드들을 수행하는 것의 부분으로서 FMC 제어 레지스터들(50) 내의 하나 이상의 상태 레지스터들에 기록된 다양한 인터럽트들을 모니터할 수 있다. FMI 제어 회로(42)는 인터럽트를 클리어하고 대응하는 커맨드를 완료할 수 있다. 커맨드 FIFO(40)에 커맨드들이 없으면, 인터럽트들은 그 대신 IOP(32)/프로세서(22)(인에이블된 경우)로 전달될 수 있다. 따라서, FMC 제어 레지스터들(50)에 대한 PIO 기입 동작들 및 IOP(32)/프로세서(22)에 대한 인터럽트들은 플래시 메모리 디바이스들(28A-28B)로/로부터의 메모리 전송들을 수행하기 위한 다른 메커니즘일 수 있다.
이제 도 5를 보면, LP 커맨드 큐(40)로부터의 커맨드를 프로세싱하기 위한 FMI 제어 회로(42)의 일 실시예의 동작을 예시하는 흐름도가 도시된다. 블록들은 이해의 용이성을 위해 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 FMI 제어 회로(42) 내의 결합 로직에서 병렬로 수행될 수 있다. 블록들, 블록들의 결합들, 및/또는 전체 흐름도는 복수의 클록 사이클에 걸쳐서 파이프라인될 수 있다. FMI 제어 회로(42)는 도 5에 예시된 동작을 구현하도록 구성될 수 있다.
FMI 제어 회로(42)는 LP 커맨드 FIFO(40)로부터 커맨드를 판독하도록 구성될 수 있다(블록 80). 커맨드가 매크로 커맨드가 아닌 경우(결정 블록 82, "아니오" 레그), FMI 제어 회로(42)는 커맨드를 수행하도록 구성될 수 있다(블록 84). 일단 커맨드가 완료되면, 그리고 일드(Y) 비트가 설정되고 HP 커맨드 큐(41)에 유효 커맨드가 존재하는 경우(결정 블록 85, "예" 레그), FMI 제어 회로(42)는 레지스터(51)에 HPE 비트를 설정하고, HP 커맨드 프로세싱으로(예를 들어, 도 6으로) 나가도록 구성될 수 있다(블록 87). 유사하게, 일부 실시예들에서, FMI 제어 회로(42)는 (예를 들어, 레지스터(51)를 기입하는 소프트웨어에 의해) 설정되어 있는 HPE 비트에 응답하여 HP 커맨드 프로세싱으로 나가도록(또는 적어도 낮은 우선순위 프로세싱으로 중단하도록) 구성될 수 있다. 그렇지 않으면(결정 블록 84, "아니오" 레그), FMI 제어 회로(42)는 매크로가 그의 끝에 도달했는지를 결정하는 데 이용된 워드 카운트를 검사하도록 구성될 수 있다. 커맨드가 매크로의 부분이 아닌 경우, 워드 카운트는 0일 수 있다(결정 블록 86, "아니오" 레그). FMI 제어 회로(42)는 매크로 커맨드와 연관된 루프 카운트를 검사하도록 구성될 수 있다. 커맨드가 매크로의 부분이 아닌 경우, 루프 카운트는 0일 수 있다(결정 블록 95, "아니오" 레그). FMI 제어 회로(42)는 커맨드 FIFO(40)에 다른 유효 커맨드가 존재하는지를 결정하도록 구성될 수 있다(결정 블록 88). 즉, FMI 제어 회로(42)는 커맨드 FIFO(40)가 비어있는지를 결정하도록 구성될 수 있다. 다른 유효 커맨드가 존재하는 경우(결정 블록 88, "예" 레그), FMI 제어 회로(42)는 다음 커맨드를 판독하고 프로세싱하도록 구성될 수 있다. 그렇지 않으면, FMI 제어 회로(42)의 커맨드 프로세싱 회로는 다른 유효 커맨드가 커맨드 FIFO(40)에 기입될 때까지 유휴 상태일 수 있다(결정 블록 88, "아니오" 레그).
커맨드가 매크로 커맨드인 경우(결정 블록 82, "예" 레그), FMI 제어 회로(42)는 매크로 커맨드의 길이 오퍼랜드로 워드 카운트를 초기화하고, 매크로 커맨드의 루프 카운트 오퍼랜드로 루프 카운트를 초기화하도록 구성될 수 있다(블록 90). FMI 제어 회로(42)는 또한 매크로 메모리(44)로부터 커맨드를 판독할 수 있다(블록 92). 구체적으로, 이 경우, FMI 제어 회로(42)는 매크로 커맨드의 어드레스 오퍼랜드로서 제공된 매크로 메모리(44) 내의 어드레스로부터 제1 워드를 판독할 수 있다. FMI 제어 회로(42)는 커맨드를 수행하도록 구성될 수 있고(블록 84), 워드 카운트를 검사하도록 구성될 수 있다(이 경우 Y 비트가 존재하지 않을 수 있고, 따라서 결정 블록 85는 "아니오" 레그로 될 수 있다). 워드 카운트는 0보다 클 수 있고(결정 블록 86, "예" 레그), FMI 제어 회로(42)는 워드 카운트를 감분하고, (예를 들어, 어드레스를 증분함으로써) 매크로 메모리(44)로부터 다음 커맨드를 판독하도록 구성될 수 있다(블록들 94 및 96). FMI 제어 회로(42)는 (도 5의 흐름도에서 결정 블록(82)으로 리턴하는) 다음 커맨드를 프로세싱하도록 구성될 수 있다. 워드 카운트가 0인 경우(결정 블록 86, "아니오" 레그), FMI 제어 회로(42)는 루프 카운트를 검사하도록 구성될 수 있다. 루프 카운트가 0보다 큰 경우(결정 블록 95, "예" 레그), 매크로의 다른 반복이 수행된다. FMI 제어 회로(42)는 루프 카운트를 감분하고(블록 97), 워드 카운트 및 매크로 어드레스를 재초기화하고(블록 99), 및 매크로 메모리(44)로부터 다음 커맨드(즉, 매크로의 제1 커맨드)를 판독할 수 있다(블록 96). 워드 카운트와 루프 카운트가 둘다 0인 경우(결정 블록 86 및 95, "아니오" 레그), 매크로는 완료되고, FMI 제어 회로(42)는 커맨드 큐(40)의 다음 유효 커맨드를 검사할 수 있다(결정 블록 88).
각각의 커맨드가 매크로 커맨드인 것에 대해 검사되기 때문에, 매크로 커맨드들은 매크로 메모리(44)에 또한 저장될 수 있다는 것에 주목한다. 따라서, 수행될 마지막 매크로가 커맨드 FIFO(40)로 리턴하여서, 매크로들은 그것들을 호출한 매크로들로 리턴하지 않는다는 의미에서 진정한 네스팅(true nesting)이 존재하지 않더라도, 매크로들은 "네스트(nested)"될 수 있다.
도 6은 HP 커맨드 큐(41)로부터 커맨드를 프로세싱하기 위한 FMI 제어 회로(42)의 일 실시예의 동작을 예시하는 흐름도이다. 즉, 도 6에 예시된 바와 같은 프로세싱은 도 5에 대해 위에서 논의한 바와 같이 LP 프로세싱을 나가는 것에 응답하여 개시될 수 있다(블록 87). 블록들은 이해의 용이성을 위해 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 블록들은 FMI 제어 회로(42) 내의 결합 로직에서 병렬로 수행될 수 있다. 블록들, 블록들의 결합들, 및/또는 전체 흐름도는 복수의 클록 사이클에 걸쳐서 파이프라인될 수 있다. FMI 제어 회로(42)는 도 6에 예시된 동작을 구현하도록 구성될 수 있다.
FMI 제어 회로(42)는 HP 커맨드 FIFO(40)로부터 커맨드를 판독하도록 구성될 수 있다(블록 180). 커맨드가 매크로 커맨드가 아닌 경우(결정 블록 182, "아니오" 레그), FMI 제어 회로(42)는 커맨드를 수행하도록 구성될 수 있다(블록 184). 일단 커맨드가 완료되면, FMI 제어 회로(42)는 매크로가 그의 끝에 도달했는지를 결정하는 데 이용된 워드 카운트를 검사하도록 구성될 수 있다. 커맨드가 매크로의 부분이 아닌 경우, 워드 카운트는 0일 수 있다(결정 블록 186, "아니오" 레그). FMI 제어 회로(42)는 매크로 커맨드와 연관된 루프 카운트를 검사하도록 구성될 수 있다. 커맨드가 매크로의 부분이 아닌 경우, 루프 카운트는 0일 수 있다(결정 블록 195, "아니오" 레그). FMI 제어 회로(42)는 HP 커맨드 FIFO(41)에 다른 유효 커맨드가 존재하는지를 결정하도록 구성될 수 있다(결정 블록 188). 즉, FMI 제어 회로(42)는 HP 커맨드 FIFO(41)가 비어있는지를 결정하도록 구성될 수 있다. 다른 유효 커맨드가 존재하는 경우(결정 블록 188, "예" 레그), FMI 제어 회로(42)는 다음 커맨드를 판독하고 프로세싱하도록 구성될 수 있다. 그렇지 않으면, FMI 제어 회로(42)는 HPE 비트가 클리어인지를 검사할 수 있다(결정 블록 198). 그렇다면, FMI 제어 회로(42)는 LP 커맨드 프로세싱으로 리턴할 수 있다(결정 블록 198, "예" 레그). 그렇지 않다면(결정 블록 198, "아니오" 레그), FMI 제어 회로(42)는 유효 커맨드가 HP 커맨드 FIFO(41)에 나타나거나 HPE 비트가 클리어될 때까지 유휴 상태일 수 있다.
커맨드가 매크로 커맨드인 경우(결정 블록 182, "예" 레그), FMI 제어 회로(42)는 매크로 커맨드의 길이 오퍼랜드로 워드 카운트를 초기화하고, 매크로 커맨드의 루프 카운트 오퍼랜드로 루프 카운트를 초기화하도록 구성될 수 있다(블록 190). FMI 제어 회로(42)는 또한 매크로 메모리(44)로부터 커맨드를 판독할 수 있다(블록 192). 구체적으로, 이 경우, FMI 제어 회로(42)는 매크로 커맨드의 어드레스 오퍼랜드로서 제공된 매크로 메모리(44) 내의 어드레스로부터 제1 워드를 판독할 수 있다. FMI 제어 회로(42)는 커맨드를 수행하도록 구성될 수 있고(블록 184), 워드 카운트를 검사하도록 구성될 수 있다. 워드 카운트는 0보다 클 수 있고(결정 블록 186, "예" 레그), FMI 제어 회로(42)는 워드 카운트를 감분하고, (예를 들어, 어드레스를 증분함으로써) 매크로 메모리(44)로부터 다음 커맨드를 판독하도록 구성될 수 있다(블록들 194 및 196). FMI 제어 회로(42)는 (도 6의 흐름도에서 결정 블록(182)으로 리턴하는) 다음 커맨드를 프로세싱하도록 구성될 수 있다. 워드 카운트가 0인 경우(결정 블록 186, "아니오" 레그), FMI 제어 회로(42)는 루프 카운트를 검사하도록 구성될 수 있다. 루프 카운트가 0보다 큰 경우(결정 블록 195, "예" 레그), 매크로의 다른 반복이 수행된다. FMI 제어 회로(42)는 루프 카운트를 감분하고(블록 197), 워드 카운트 및 매크로 어드레스를 재초기화하고(블록 199), 및 매크로 메모리(44)로부터 다음 커맨드(즉, 매크로의 제1 커맨드)를 판독할 수 있다(블록 196). 워드 카운트와 루프 카운트가 둘다 0인 경우(결정 블록 186 및 195, "아니오" 레그), 매크로는 완료되고, FMI 제어 회로(42)는 HP 커맨드 FIFO(41)의 다음 유효 커맨드를 검사할 수 있다(결정 블록 188).
이제 도 7을 보면, 플래시 메모리 디바이스(28A 또는 28B)에 대한 복수 페이지 기입을 수행하기 위한 매크로들의 이용의 예의 블록도가 도시된다. 커맨드들의 3 부분을 포함하여 매크로 메모리(44)의 내용이 도시된다. 매크로 메모리 어드레스 0과 N-1 사이에는, 이전 페이지에 대한 기입을 완료하기 위한 매크로의 N 워드들(100)이 저장된다. 매크로 메모리 어드레스 N과 N+M-1 사이에는, 다음 페이지에 대한 기입을 시작하기 위한 매크로의 M 워드들(102)이 저장된다. 매크로 메모리 어드레스 N+M과 N+M+P-1 사이에는, 메모리에 대한 기입의 마지막 페이지를 끝마치기 위한 매크로의 P 워드들(104)이 저장된다.
도 7에 예시된 바와 같이 LP 커맨드 FIFO(40)의 꼭대기에 있는 FIFO의 머리 및 LP 커맨드 FIFO(40) 아래 순서로 진행하는 FIFO 내의 후속 커맨드들을 갖는, LP 커맨드 FIFO(40)의 커맨드들의 세트가 도 7에 예시된다. 제1 커맨드는 매크로 N, M이다. 커맨드는 워드 N에서 시작하는 매크로(104)를 호출하고, M 워드(즉, 도 6에 예시된 바와 같은 매크로(102))를 수행한다. 따라서, 제1 페이지에 대한 기입이 초기화된다. 후속 페이지 기입들은 매크로 0,N+M 커맨드들을 이용하여 수행될 수 있다. 이들 커맨드들은 매크로(100) 및 매크로(102)가 수행되도록 한다. 이전 페이지에 대한 기입은 완료될 수 있고(매크로(100)), 다음 페이지에 대한 기입은 시작될 수 있다(매크로(102)). 마지막 페이지는 매크로 0,N+M+P 커맨드를 이용하여 기입될 수 있다. 이 커맨드는 매크로들(100, 102 및 104)이 수행되도록 함으로써, 제2 내지 마지막 페이지에 대한 기입을 완료하고(매크로(100)), 마지막 페이지에 대한 기입을 수행하고(매크로(102)), 마지막 페이지에 대한 기입을 완료하고 플래시 메모리 디바이스(28A 또는 28B)를 클로즈(close)한다(매크로(104)). 이 예에서, 각각의 매크로 커맨드의 루프 카운트 오퍼랜드는 0이다(1 반복). 그러나, 도 7의 제1 예 아래에 도시된 다른 예에서, 루프 카운트 오퍼랜드는 커맨드 큐의 커맨드들을 훨씬 더 효율적이 되게 하는 데 이용될 수 있다. 제1 페이지에 대한 매크로 N,M 커맨드 및 마지막 페이지에 대한 매크로 0,N+M+P 커맨드의 루프 카운트는 여전히 1 반복을 특정하는 0일 수 있다. 그러나, 기입의 중간 페이지들은 모두 페이지 카운트(C) 마이너스 3과 동일한 루프 카운트 오퍼랜드를 갖는 1 매크로 커맨드(매크로 0,N+M)를 이용하여 실현될 수 있다. 이 실시예에서, 루프 카운트는 루프 카운트 오퍼랜드가 원하는 반복 수보다 1 작다는 사실뿐만 아니라, 제1 및 마지막 페이지를 고려하여 C-3이다. 매크로들(100, 102, 및 104)이 예시하는 바와 같이, 매크로 메모리(44)의 매크로들의 주의깊은 배열을 통해, 밀집하고 효율적인 매크로들이 생길 수 있다. 매크로들은 각각의 페이지 기입 오퍼랜드에 대해 상이한 오퍼랜드들을 이용하기 위해 load_from_fifo 커맨드들을 활용할 수 있고, 각각의 페이지에 대한 오퍼랜드들은 LP 커맨드 FIFO(40)의 커맨드들을 개시하기 전에 오퍼랜드 FIFO(46) 내로 로드될 수 있다.
매크로(102)에 포함된 커맨드들은 기입될 어드레스, 칩 인에이블들, 등등을 확립할 수 있다. 매크로(100)에 포함된 커맨드들은 메모리에 이전 페이지를 전송하기 위한 xfer_page, 및 에러들을 검사하고 (매크로(102)를 통해 초기화될 수 있는) 다음 페이지 전송을 동기화하기 위한 커맨드들을 포함할 수 있다. 매크로(104)는 활성 페이지/영역을 비활성화하고 및/또는 플래시 메모리 디바이스에 대해 특정된 바와 같이 임의의 다른 동작들을 수행하는, 에러들을 검사하고 기입들의 타겟이었던 플래시 메모리 디바이스를 클로즈하기 위한 커맨드들뿐만 아니라, 최종 xfer_page 커맨드를 포함할 수 있다.
이제 도 8을 보면, IOP(32) 및/또는 프로세서(22)에 의해 실행될 플래시 코드(flash code)의 동작을 예시하는 흐름도가 도시된다. 블록들은 이해의 용이성을 위해 특정 순서로 도시되지만, 다른 순서들이 이용될 수 있다. 플래시 코드는 IOP(32) 및/또는 프로세서(22)에 의해 실행될 때, 도 8에 예시된 동작을 구현할 수 있는 명령어들을 포함할 수 있다.
플래시 코드는 집적 회로(10)의 동작 중에 임의의 시간에 실행될 수 있다. 예를 들어, 플래시 코드는 플래시 메모리 인터페이스 유닛(30)을 초기화하도록 실행될 수 있다. 플래시 코드는 또한 플래시 메모리(30)가 매크로 메모리(44)의 매크로들을 재구성하기 위해, 유휴 상태이지만 액세스되는 임의의 시간에 실행될 수 있다.
플래시 코드는 매크로 메모리(44)에 임의의 원하는 매크로들을 다운로드할 수 있다(블록(110)). 매크로 메모리(44)에 이미 저장된 매크로들이 원하는 매크로들인 경우, 또는 원하는 매크로들이 존재하지 않는 경우, 블록(110)은 스킵될 수 있다. 플래시 코드는 또한 커맨드들 또는 매크로들에 의해 이용될 임의의 오퍼랜드들을 다운로드할 수 있고(블록 112), 블록(112)은 다운로드될 오퍼랜드들이 존재하지 않는 경우 스킵될 수 있다. 플래시 코드는 LP 커맨드 FIFO(40)에 수행될 커맨드들을 다운로드할 수 있고(블록 114), 커맨드 수행은 플래시 메모리 인터페이스 유닛(30)에서 시작할 수 있다. LP 커맨드 FIFO(50)에 커맨드들을 다운로드하는 것은, 높은 우선순위 커맨드들을 위한 커맨드들의 차단이 허용되고 다른 Y 비트들을 클리어하도록, 동작들의 일부분의 완료를 표현하는 그것들의 커맨드들에 대한 Y 비트들을 설정하는 것을 포함할 수 있다. 부가적인 커맨드들이 이미 다운로드되고(결정 블록 116, "예" 레그), 그것들의 커맨드들이 플래시 메모리 인터페이스 유닛(30)에 의해 현재 수행되고 있는 커맨드들보다 높은 우선순위인 경우(결정 블록 120, "예" 레그), 플래시 코드는 HP 커맨드 FIFO(41)에 부가적인 커맨드들을 다운로드할 수 있다(블록 122). 그렇지 않으면(결정 블록 120, "아니오" 레그), 플래시 코드는 LP 커맨드 FIFO(40)에 커맨드들을 다운로드할 수 있다(블록 114). 새로운 오퍼랜드들 또는 매크로들이 다운로드될 준비가 되면(결정 블록 118, "예" 레그), 플래시 코드는 블록들(110 및/또는 112)로 리턴하여 그것들을 다운로드할 수 있다. 부가적으로, HP 커맨드들의 완료시, 플래시 코드는 레지스터(51)에 HPE 비트를 리셋할 수 있다(도 8에 도시되지 않음).
시스템 및 컴퓨터 액세스 가능한 저장 매체
다음으로 도 9를 보면, 시스템(150)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 시스템(150)은 하나 이상의 주변장치(154) 및 외부 메모리(158)에 결합되는 집적 회로(10)(도 1)의 적어도 하나의 사례를 포함한다. 외부 메모리(158)는 메모리(12) 및/또는 플래시 메모리(28A-28B)를 포함할 수 있다. 메모리(158) 및/또는 주변장치들(154)에 하나 이상의 공급 전압들뿐만 아니라 집적 회로(10)에 공급 전압들을 공급하는 전력 공급 장치(156)가 또한 제공된다. 일부 실시예들에서, 집적 회로(10)의 하나보다 많은 사례가 포함될 수 있다(그리고 하나 보다 많은 외부 메모리(158)가 또한 포함될 수 있다).
주변장치들(154)은 시스템(150)의 타입에 따라 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 일 실시예에서, 시스템(150)은 모바일 디바이스(예를 들어, PDA(personal digital assistant), 스마트 폰, 등등)일 수 있고, 주변장치들(154)은 와이파이, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템(global positioning system) 등등과 같은 다양한 타입의 무선 통신을 위한 디바이스들을 포함할 수 있다. 주변장치들(154)은 또한 RAM 저장소, 고체 상태 저장소, 또는 디스크 저장소를 포함하는 부가적인 저장소를 포함할 수 있다. 주변장치들(154)은 터치 디스플레이 스크린들 또는 멀티터치 디스플레이 스크린들을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 디바이스들, 마이크로폰들, 스피커들, 등등과 같은 사용자 인터페이스 디바이스들을 포함할 수 있다. 다른 실시예들에서, 시스템(150)은 임의의 타입의 컴퓨팅 시스템(예를 들어, 데스크톱 퍼스널 컴퓨터, 랩톱, 워크스테이션, 넷톱(net top) 등)일 수 있다.
외부 메모리(158)는 임의의 타입의 메모리를 포함할 수 있다. 예를 들어, 외부 메모리(158)는 SRAM, SDRAM(synchronous DRAM)과 같은 DRAM(dynamic RAM), 더블 데이터 레이트(double data rate)(DDR, DDR2, DDR3, 등) SDRAM, RAMBUS DRAM 등일 수 있다. 외부 메모리(158)는 SIMM(single inline memory module), DIMM(dual inline memory module) 등과 같은, 메모리 디바이스들이 실장되는 하나 이상의 메모리 모듈을 포함할 수 있다.
이제 도 10을 보면, 컴퓨터 액세스 가능한 저장 매체(200)의 블록도가 도시된다. 일반적으로 말하면, 컴퓨터 액세스 가능한 저장 매체는 컴퓨터에 명령어들 및/또는 데이터를 제공하기 위해 사용중에 컴퓨터에 의해 액세스 가능한 임의의 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 액세스 가능한 저장 매체는 자기 또는 광학적 매체, 예를 들어, 디스크(고정식 또는 착탈식), 테이프, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, 또는 블루레이(Blu-Ray)와 같은 저장 매체를 포함할 수 있다. 저장 매체는 또한 USB(Universal Serial Bus) 인터페이스, FMI(flash memory interface), SPI(serial peripheral interface) 등과 같은 주변장치 인터페이스를 통해 액세스 가능한 RAM(예를 들어, SDRAM(synchronous dynamic RAM), RDRAM(Rambus DRAM), SRAM(static RAM) 등), ROM, 플래시 메모리, 불휘발성 메모리(예를 들어, 플래시 메모리)와 같은 휘발성 또는 불휘발성 메모리 매체를 포함할 수 있다. 저장 매체는 MEMS(microelectromechanical system)를 포함할 수 있다. 도 10의 컴퓨터 액세스 가능한 저장 매체(200)는 IOP(32) 및/또는 프로세서(22)에 의해 실행가능한 코드를 포함할 수 있는 플래시 코드(202)를 저장할 수 있다. 플래시 코드(202)는 실행될 때, 도 8과 관련하여 위에서 설명된 동작을 구현하는 명령어들을 포함할 수 있다. 일반적으로, 컴퓨터 액세스 가능한 저장 매체(200)는 실행될 때, 도 8에 도시된 동작의 일부 또는 전부를 구현하는 임의의 세트의 명령어들을 저장할 수 있다. 또한, 컴퓨터 액세스 가능한 저장 매체(200)는 매크로 메모리(44)에 다운로드될 하나 이상의 매크로(204), 오퍼랜드 FIFO(36)에 다운로드될 하나 이상의 오퍼랜드, 및/또는 커맨드 FIFO(40)에 다운로드될 하나 이상의 커맨드를 저장할 수 있다. 캐리어 매체는 유선 또는 무선 전송과 같은 전송 매체뿐만 아니라 컴퓨터 액세스 가능한 저장 매체를 포함할 수 있다.
다수의 변형들 및 수정들은 위의 개시가 완전히 인식되면 이 기술분야의 통상의 기술자에게 명백해질 것이다. 다음의 청구항들은 모든 이러한 변형들 및 수정들을 포괄하도록 해석되는 것이 의도된다.
Claims (12)
- 집적 회로에서 외부 인터페이스를 제어하는 장치로서,
제1 복수의 커맨드를 저장하도록 구성되는 제1 커맨드 큐(command queue) - 상기 제1 커맨드 큐는 또한 상기 제1 복수의 커맨드의 차단(interruption)이 허용되는 상기 제1 복수의 커맨드 내의 포인트들을 식별하는 하나 이상의 표시들을 저장하도록 구성됨 - ;
제2 복수의 커맨드를 저장하도록 구성되는 제2 커맨드 큐;
상기 제1 커맨드 큐 및 상기 제2 커맨드 큐에 결합되는 제어 회로; 및
상기 제어 회로에 결합되는 복수의 제어 레지스터
를 포함하고,
상기 제어 회로는 상기 제2 커맨드 큐 내의 적어도 제2 커맨드를 검출하는 것에 응답하여 차단가능한 포인트로서 식별된 제1 커맨드에서 상기 제1 복수의 커맨드의 프로세싱을 차단하도록 구성되고,
상기 제어 회로는 상기 차단하는 것에 응답하여 상기 제2 커맨드의 프로세싱을 개시하도록 구성되고,
상기 제어 회로는 상기 제2 복수의 커맨드가 프로세싱되고 있음을 표시하도록 상기 복수의 제어 레지스터 중 하나를 갱신하도록 구성되고,
상기 제어 회로는 상기 복수의 제어 레지스터 중 하나가 상기 제1 복수의 커맨드의 프로세싱이 계속될 것임을 표시하도록 다시 갱신될 때까지, 상기 제2 커맨드 큐가 상기 제2 복수의 커맨드 없이 비어 있더라도, 상기 제1 복수의 커맨드의 프로세싱을 금지하도록 구성되는 제어 장치. - 제1항에 있어서, 상기 하나 이상의 표시들은 복수의 표시들이고, 각각의 표시는 상기 제1 복수의 커맨드의 각각의 커맨드와 연관되고, 상기 제1 복수의 커맨드가 상기 각각의 커맨드에서 차단가능한지 여부를 표시하는 제어 장치.
- 삭제
- 집적 회로로서,
하나 이상의 메모리 디바이스에 결합하도록 구성되는 메모리 컨트롤러;
하나 이상의 플래시 메모리 디바이스에 결합하도록 구성되는 플래시 메모리 인터페이스 유닛 - 상기 플래시 메모리 인터페이스 유닛은 제1항에 기재된 장치를 포함함 - ;
상기 메모리 컨트롤러, 상기 플래시 메모리 인터페이스 유닛에 결합되는 직접 메모리 액세스(direct memory access; DMA) 컨트롤러 - 상기 DMA 컨트롤러는 상기 메모리 컨트롤러와 상기 플래시 메모리 인터페이스 유닛 사이의 DMA 동작들을 수행하도록 구성됨 - ; 및
상기 DMA 컨트롤러에 결합되는 프로세서
를 포함하고,
상기 프로세서는 상기 플래시 메모리 인터페이스 유닛을 제어하도록 구성되고, 상기 프로세서로부터의 통신들은 상기 DMA 컨트롤러와 상기 플래시 메모리 인터페이스 유닛 사이의 인터커넥트(interconnect)를 거쳐서 상기 DMA 컨트롤러를 통해 상기 플래시 메모리 인터페이스 유닛으로 통과하고, 상기 인터커넥트는 또한 상기 플래시 메모리 인터페이스 유닛과 상기 메모리 컨트롤러 사이의 상기 DMA 동작들에서 이용되고,
상기 프로세서는 상기 플래시 메모리 인터페이스 유닛과 상기 하나 이상의 플래시 메모리 디바이스 사이의 제1 전송을 제어하기 위해 상기 제1 커맨드 큐에 제1 복수의 커맨드를 기입하도록 구성되고, 상기 프로세서는 상기 제1 전송의 완료 전에 상기 플래시 메모리 인터페이스 유닛과 상기 하나 이상의 플래시 메모리 디바이스 사이의 제2 전송을 제어하기 위해 상기 제2 커맨드 큐에 제2 복수의 커맨드를 기입하도록 구성되는 집적 회로. - 외부 인터페이스에서 하나 이상의 전송을 수행하기 위해 인터페이스 컨트롤러 내의 제1 커맨드 큐로부터 커맨드들을 프로세싱하는 단계;
상기 제1 커맨드 큐로부터 상기 커맨드들 내의 제1 커맨드와 연관된 표시를 검출하는 단계;
상기 표시가 검출되는 시간에 제2 커맨드 큐 내의 적어도 하나의 제2 커맨드를 검출하는 단계;
상기 표시 및 상기 적어도 하나의 제2 커맨드를 검출하는 것에 응답하여 상기 제2 커맨드 큐로부터 커맨드들을 프로세싱하기 위해 상기 제1 커맨드 큐로부터의 추가 커맨드 프로세싱을 차단하는 단계;
상기 제2 커맨드 큐 내의 상기 커맨드들이 프로세싱되고 있음을 표시하도록 제어 레지스터를 기입하는 단계; 및
상기 제2 커맨드 큐가 비어 있더라도, 상기 제어 레지스터 내용에 응답하여 상기 제1 커맨드 큐로부터의 추가 커맨드 프로세싱을 방지하는 단계
를 포함하는 방법. - 삭제
- 삭제
- 제5항에 있어서, 상기 제1 커맨드 큐 내의 상기 커맨드들의 계속된 프로세싱을 허용하도록 상기 제어 레지스터를 갱신하는 기입 동작을 수신하는 단계를 더 포함하는 방법.
- 제8항에 있어서, 상기 기입 동작은 프로세서에 의해 발행되는 방법.
- 복수의 명령어를 저장한 컴퓨터 판독가능한 저장 매체로서, 상기 복수의 명령어는, 제1 커맨드 큐 및 제2 커맨드 큐 - 각각의 커맨드 큐는 외부 인터페이스 상에서의 전송을 제어하기 위한 복수의 커맨드를 저장하도록 구성됨 - 를 포함하는 외부 인터페이스 유닛을 또한 포함하는 집적 회로 내의 프로세서에서 실행될 때,
상기 제1 커맨드 큐 내로 제1 복수의 커맨드를 로드(load)하고 - 상기 제1 복수의 커맨드의 수행은 상기 외부 인터페이스 상에서의 제1 전송을 유발함 - ;
상기 제1 전송보다 더 높은 우선순위 전송에 대한 요구를 검출하고;
상기 더 높은 우선순위 전송을 수행하기 위해 상기 제2 커맨드 큐 내로 제2 복수의 커맨드를 로드하고 - 상기 외부 인터페이스 유닛은 상기 더 높은 우선순위 전송을 수행하기 위해 상기 제1 전송의 프로세싱을 차단하도록 구성됨 - ;
상기 제2 복수의 커맨드가 완료되는 것에 응답하여, 상기 제2 복수의 커맨드가 실행되고 있다는 표시를 클리어하도록 제어 레지스터를 기입하는 - 상기 외부 인터페이스 유닛은, 상기 제2 커맨드 큐가 비어 있더라도, 상기 표시에 응답하여 상기 제1 커맨드 큐로부터의 상기 제1 복수의 커맨드의 프로세싱을 금지하도록 구성됨 -
컴퓨터 판독가능한 저장 매체. - 제10항에 있어서, 실행시에 상기 제1 커맨드 큐 내로 상기 제1 복수의 커맨드를 로드하는 상기 복수의 명령어는, 실행시에, 상기 제1 복수의 커맨드가 차단가능한 포인트들의 대응하는 표시들을 로드하는 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체.
- 제10항에 있어서, 상기 복수의 명령어는, 실행시에,
상기 제1 전송보다 더 높은 우선순위가 아닌 제3 전송에 대한 요구를 검출하고;
상기 제3 전송을 수행하기 위해 상기 제1 커맨드 큐 내로 제3 복수의 커맨드를 로드
하는 컴퓨터 판독가능한 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/220,940 | 2011-08-30 | ||
US13/220,940 US9021146B2 (en) | 2011-08-30 | 2011-08-30 | High priority command queue for peripheral component |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130024860A KR20130024860A (ko) | 2013-03-08 |
KR101408434B1 true KR101408434B1 (ko) | 2014-06-17 |
Family
ID=46801322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120095875A KR101408434B1 (ko) | 2011-08-30 | 2012-08-30 | 주변장치 컴포넌트를 위한 높은 우선순위 커맨드 큐 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9021146B2 (ko) |
EP (1) | EP2565795B1 (ko) |
JP (1) | JP5499124B2 (ko) |
KR (1) | KR101408434B1 (ko) |
CN (1) | CN102968289B (ko) |
AU (1) | AU2012216395B2 (ko) |
BR (1) | BR102012021854B1 (ko) |
TW (1) | TWI493350B (ko) |
WO (1) | WO2013032816A1 (ko) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5879982B2 (ja) * | 2011-11-30 | 2016-03-08 | 富士通株式会社 | ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法 |
US20130219088A1 (en) * | 2012-02-22 | 2013-08-22 | Lsi Corporation | Configurable prioritization of data transmission in a data storage topology |
US10002021B2 (en) * | 2012-07-20 | 2018-06-19 | Qualcomm Incorporated | Deferred preemption techniques for scheduling graphics processing unit command streams |
US9250954B2 (en) * | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
TWI493455B (zh) * | 2013-07-02 | 2015-07-21 | Phison Electronics Corp | 命令佇列管理方法、記憶體控制器及記憶體儲存裝置 |
US9934043B2 (en) * | 2013-08-08 | 2018-04-03 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for providing computational imaging pipeline |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
US9256551B2 (en) | 2013-08-09 | 2016-02-09 | Apple Inc. | Embedded encryption/secure memory management unit for peripheral interface controller |
US9454310B2 (en) | 2014-02-14 | 2016-09-27 | Micron Technology, Inc. | Command queuing |
US9883641B2 (en) * | 2014-05-07 | 2018-02-06 | Vivint, Inc. | Sprinkler control systems and methods |
KR102254099B1 (ko) | 2014-05-19 | 2021-05-20 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
US9477631B2 (en) | 2014-06-26 | 2016-10-25 | Intel Corporation | Optimized credit return mechanism for packet sends |
US9460019B2 (en) | 2014-06-26 | 2016-10-04 | Intel Corporation | Sending packets using optimized PIO write sequences without SFENCEs |
US9665509B2 (en) * | 2014-08-20 | 2017-05-30 | Xilinx, Inc. | Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system |
US20160062925A1 (en) * | 2014-08-28 | 2016-03-03 | Samsung Electronics Co., Ltd. | Method and system for managing storage device operations by a host device |
US20160092118A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Memory write management in a computer system |
KR101730991B1 (ko) | 2014-10-28 | 2017-04-28 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
JP2016116178A (ja) * | 2014-12-17 | 2016-06-23 | ソニー株式会社 | 通信装置及び通信方法 |
CN111857814A (zh) * | 2015-05-18 | 2020-10-30 | 北京忆芯科技有限公司 | 执行微指令的存储控制器 |
KR20170060300A (ko) * | 2015-11-24 | 2017-06-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN107564563B (zh) * | 2016-06-30 | 2020-06-09 | 华邦电子股份有限公司 | 存储器装置及其操作方法 |
KR102648180B1 (ko) * | 2016-07-19 | 2024-03-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그 동작 방법 |
CN117555598A (zh) * | 2016-09-28 | 2024-02-13 | 北京忆芯科技有限公司 | 调度方法与装置 |
CN108153582B (zh) * | 2016-12-05 | 2024-01-26 | 北京忆恒创源科技股份有限公司 | Io命令处理方法与介质接口控制器 |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10509569B2 (en) | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
US10466904B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
WO2019117854A1 (en) * | 2017-12-11 | 2019-06-20 | Hewlett-Packard Development Company, L.P. | Controller event queues |
CN108663971A (zh) * | 2018-06-01 | 2018-10-16 | 北京汉能光伏投资有限公司 | 命令转发方法及装置、太阳能系统和中央控制器 |
CN110568991B (zh) * | 2018-06-06 | 2023-07-25 | 北京忆恒创源科技股份有限公司 | 降低锁引起的io命令冲突的方法与存储设备 |
CN110858127B (zh) * | 2018-08-22 | 2023-09-12 | 慧荣科技股份有限公司 | 数据存储装置 |
US11144240B2 (en) | 2018-08-24 | 2021-10-12 | Micron Technology, Inc. | Memory sub-system for increasing bandwidth for command scheduling |
US10877906B2 (en) * | 2018-09-17 | 2020-12-29 | Micron Technology, Inc. | Scheduling of read operations and write operations based on a data bus mode |
US11269557B2 (en) | 2019-01-09 | 2022-03-08 | Atto Technology, Inc. | System and method for ensuring command order in a storage controller |
US11093244B2 (en) | 2019-08-28 | 2021-08-17 | Micron Technology, Inc. | Command delay |
US11327912B2 (en) * | 2019-09-12 | 2022-05-10 | Qualcomm Incorporated | Controlling the application time of radio frequency front end triggers based on execution of sequences |
KR20220137120A (ko) * | 2020-03-10 | 2022-10-11 | 마이크론 테크놀로지, 인크 | 메모리 서브시스템의 큐를 관리하기 위한 방법, 시스템 및 판독 가능 저장 매체 |
US11726713B2 (en) | 2021-06-25 | 2023-08-15 | Western Digital Technologies, Inc. | Systems and methods for priority command data fetching management |
TWI793966B (zh) * | 2022-01-10 | 2023-02-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN116049045B (zh) * | 2022-07-19 | 2023-12-08 | 荣耀终端有限公司 | 命令发送方法及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108743A (en) * | 1998-02-10 | 2000-08-22 | Intel Corporation | Technique for performing DMA including arbitration between a chained low priority DMA and high priority DMA occurring between two links in the chained low priority |
US20060193260A1 (en) * | 2005-02-24 | 2006-08-31 | George H A | Preemptive packet flow controller |
KR20110052510A (ko) * | 2009-11-10 | 2011-05-18 | 애플 인크. | 주변 컴포넌트를 위한 커맨드 큐 |
Family Cites Families (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1425173A (en) | 1972-05-03 | 1976-02-18 | Gen Electric Co Ltd | Data processing systems |
US4023143A (en) | 1975-10-28 | 1977-05-10 | Cincinnati Milacron Inc. | Fixed priority interrupt control circuit |
JPS54129942A (en) | 1978-03-31 | 1979-10-08 | Fujitsu Ltd | Direct transfer system between sub-systems |
EP0396833A1 (en) | 1989-05-12 | 1990-11-14 | International Business Machines Corporation | Trace facility for use in a multiprocessing environment |
FR2666425A1 (fr) | 1990-08-31 | 1992-03-06 | Gemplus Card Int | Procede et dispositif de mise a jour d'informations dans une memoire et leur utilisation dans les cartes a memoire. |
US6347051B2 (en) | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
US5353256A (en) | 1993-06-30 | 1994-10-04 | Intel Corporation | Block specific status information in a memory device |
US5742787A (en) | 1995-04-10 | 1998-04-21 | Intel Corporation | Hardware reset of a write state machine for flash memory |
US5745724A (en) | 1996-01-26 | 1998-04-28 | Advanced Micro Devices, Inc. | Scan chain for rapidly identifying first or second objects of selected types in a sequential list |
US5884059A (en) | 1996-01-26 | 1999-03-16 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US5799165A (en) | 1996-01-26 | 1998-08-25 | Advanced Micro Devices, Inc. | Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay |
US5790887A (en) | 1996-02-15 | 1998-08-04 | International Business Machines Corporation | Method and apparatus for processing programmed input/output (PIO) operations in a computer system |
US6201739B1 (en) | 1996-09-20 | 2001-03-13 | Intel Corporation | Nonvolatile writeable memory with preemption pin |
US5822244A (en) | 1997-09-24 | 1998-10-13 | Motorola, Inc. | Method and apparatus for suspending a program/erase operation in a flash memory |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
CN1249586C (zh) | 1997-12-22 | 2006-04-05 | Tdk株式会社 | 闪速存储器系统 |
SE9901146D0 (sv) | 1998-11-16 | 1999-03-29 | Ericsson Telefon Ab L M | A processing system and method |
US6286035B1 (en) | 1999-02-01 | 2001-09-04 | Lucent Technologies Inc. | Validating and parsing engine for system configuration and support command messages |
US6604210B1 (en) | 1999-09-09 | 2003-08-05 | International Business Machines Corporation | Method and system for detecting and recovering from in trace data |
US6633564B1 (en) * | 1999-09-22 | 2003-10-14 | Nortel Networks Limited | Method and apparatus for inserting packets into a data stream |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
DE60038538T2 (de) * | 2000-02-28 | 2009-06-25 | Alcatel Lucent | Vermittlungseinrichtung und Vermittlungsverfahren |
US7389497B1 (en) | 2000-07-06 | 2008-06-17 | International Business Machines Corporation | Method and system for tracing profiling information using per thread metric variables with reused kernel threads |
US7185061B1 (en) | 2000-09-06 | 2007-02-27 | Cisco Technology, Inc. | Recording trace messages of processes of a network component |
ATE550852T1 (de) | 2000-09-29 | 2012-04-15 | Alacritech Inc | Intelligentes netzwerkspeicherschnittstellensystem und solche einrichtungen |
US6779045B2 (en) | 2001-03-21 | 2004-08-17 | Intel Corporation | System and apparatus for increasing the number of operations per transmission for a media management system |
US6754751B1 (en) | 2001-03-30 | 2004-06-22 | Intel Corporation | Method and apparatus for handling ordered transactions |
JP2003006003A (ja) | 2001-06-18 | 2003-01-10 | Mitsubishi Electric Corp | Dmaコントローラおよび半導体集積回路 |
US6981073B2 (en) | 2001-07-31 | 2005-12-27 | Wis Technologies, Inc. | Multiple channel data bus control for video processing |
US7155568B2 (en) | 2001-09-29 | 2006-12-26 | Hewlett-Packard Development Company, L.P. | Transaction generator for initialization, rebuild, and verify of memory |
KR100448905B1 (ko) | 2002-07-29 | 2004-09-16 | 삼성전자주식회사 | 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치 |
US7152942B2 (en) | 2002-12-02 | 2006-12-26 | Silverbrook Research Pty Ltd | Fixative compensation |
US7069176B2 (en) | 2003-08-07 | 2006-06-27 | Arm Limited | Trace source correlation in a data processing apparatus |
US7149933B2 (en) | 2003-08-07 | 2006-12-12 | Arm Limited | Data processing system trace bus |
US7187950B2 (en) | 2003-11-14 | 2007-03-06 | Intel Corporation | Command station for mobile radio networks |
FR2863076B1 (fr) | 2003-11-28 | 2006-02-03 | Bull Sa | Systeme cryptographique haut debit a architecture modulaire. |
JP4536361B2 (ja) | 2003-11-28 | 2010-09-01 | 株式会社日立製作所 | データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法 |
US20050120337A1 (en) | 2003-12-01 | 2005-06-02 | Serrano Mauricio J. | Memory trace buffer |
US7484058B2 (en) | 2004-04-28 | 2009-01-27 | Emc Corporation | Reactive deadlock management in storage area networks |
US20050262309A1 (en) | 2004-04-28 | 2005-11-24 | Frey Robert T | Proactive transfer ready resource management in storage area networks |
US7493426B2 (en) | 2005-01-31 | 2009-02-17 | International Business Machines Corporation | Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control |
JP4550728B2 (ja) * | 2005-12-14 | 2010-09-22 | アラクサラネットワークス株式会社 | パケット転送装置及びマルチキャスト展開方法 |
US7900022B2 (en) | 2005-12-30 | 2011-03-01 | Intel Corporation | Programmable processing unit with an input buffer and output buffer configured to exclusively exchange data with either a shared memory logic or a multiplier based upon a mode instruction |
KR20080017982A (ko) | 2006-08-23 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 프로그램 방법 |
US8291417B2 (en) | 2006-09-08 | 2012-10-16 | Freescale Semiconductor, Inc. | Trace buffer with a processor |
JP2008117505A (ja) | 2006-11-03 | 2008-05-22 | Spansion Llc | 半導体装置およびその制御方法 |
KR100843136B1 (ko) | 2006-11-14 | 2008-07-02 | 삼성전자주식회사 | 비휘발성 메모리에서 연산 처리를 제어하는 장치 및 그방법 |
US7627744B2 (en) | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
DE102007041345B4 (de) | 2007-08-31 | 2010-07-22 | Siemens Ag | X-Core Bildrekonstruktionssystem (IRS) mit x-parallelen Recon-Pipelines |
US8127283B2 (en) | 2007-09-05 | 2012-02-28 | Intel Corporation | Enabling graphical notation for parallel programming |
KR100921787B1 (ko) | 2007-11-01 | 2009-10-15 | 주식회사 이스트후 | 낸드 플래시 메모리 제어장치 |
US7802142B2 (en) | 2007-12-06 | 2010-09-21 | Seagate Technology Llc | High speed serial trace protocol for device debug |
US8621138B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US8151100B2 (en) | 2008-02-06 | 2012-04-03 | Broadcom Corporation | Operating system for a computing device with handheld and extended computing units |
US7870345B2 (en) | 2008-03-27 | 2011-01-11 | Isilon Systems, Inc. | Systems and methods for managing stalled storage devices |
US7984324B2 (en) | 2008-03-27 | 2011-07-19 | Emc Corporation | Systems and methods for managing stalled storage devices |
KR101486987B1 (ko) | 2008-05-21 | 2015-01-30 | 삼성전자주식회사 | 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법 |
US8456478B2 (en) * | 2008-10-30 | 2013-06-04 | Microchip Technology Incorporated | Microcontroller with integrated graphical processing unit |
WO2010143209A1 (en) | 2009-06-10 | 2010-12-16 | Francesco Falanga | Suspension of memory operations for reduced read latency in memory arrays |
US8700878B2 (en) | 2009-06-16 | 2014-04-15 | Freescale Semiconductor, Inc. | Event triggered memory mapped access |
US8004884B2 (en) | 2009-07-31 | 2011-08-23 | International Business Machines Corporation | Iterative write pausing techniques to improve read latency of memory systems |
US8850103B2 (en) | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
US20110321052A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Mutli-priority command processing among microcontrollers |
US9009391B2 (en) * | 2010-10-25 | 2015-04-14 | Fastor Systems, Inc. | Solid state drive architecture |
US20120167100A1 (en) | 2010-12-23 | 2012-06-28 | Yan Li | Manual suspend and resume for non-volatile memory |
-
2011
- 2011-08-30 US US13/220,940 patent/US9021146B2/en active Active
-
2012
- 2012-08-22 WO PCT/US2012/051898 patent/WO2013032816A1/en active Application Filing
- 2012-08-23 AU AU2012216395A patent/AU2012216395B2/en active Active
- 2012-08-28 EP EP20120181946 patent/EP2565795B1/en active Active
- 2012-08-29 TW TW101131399A patent/TWI493350B/zh active
- 2012-08-30 CN CN201210315073.0A patent/CN102968289B/zh active Active
- 2012-08-30 JP JP2012204966A patent/JP5499124B2/ja active Active
- 2012-08-30 BR BR102012021854-2A patent/BR102012021854B1/pt active IP Right Grant
- 2012-08-30 KR KR1020120095875A patent/KR101408434B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108743A (en) * | 1998-02-10 | 2000-08-22 | Intel Corporation | Technique for performing DMA including arbitration between a chained low priority DMA and high priority DMA occurring between two links in the chained low priority |
US20060193260A1 (en) * | 2005-02-24 | 2006-08-31 | George H A | Preemptive packet flow controller |
KR20110052510A (ko) * | 2009-11-10 | 2011-05-18 | 애플 인크. | 주변 컴포넌트를 위한 커맨드 큐 |
Also Published As
Publication number | Publication date |
---|---|
BR102012021854A2 (pt) | 2013-10-08 |
US20130054875A1 (en) | 2013-02-28 |
JP2013058205A (ja) | 2013-03-28 |
CN102968289B (zh) | 2016-04-20 |
EP2565795A3 (en) | 2013-09-04 |
WO2013032816A1 (en) | 2013-03-07 |
TWI493350B (zh) | 2015-07-21 |
TW201319814A (zh) | 2013-05-16 |
EP2565795A2 (en) | 2013-03-06 |
KR20130024860A (ko) | 2013-03-08 |
EP2565795B1 (en) | 2015-05-20 |
BR102012021854B1 (pt) | 2020-09-15 |
CN102968289A (zh) | 2013-03-13 |
AU2012216395A1 (en) | 2013-03-21 |
US9021146B2 (en) | 2015-04-28 |
JP5499124B2 (ja) | 2014-05-21 |
AU2012216395B2 (en) | 2014-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101408434B1 (ko) | 주변장치 컴포넌트를 위한 높은 우선순위 커맨드 큐 | |
KR101248246B1 (ko) | 주변 컴포넌트를 위한 커맨드 큐 | |
US20130179614A1 (en) | Command Abort to Reduce Latency in Flash Memory Access | |
KR102668599B1 (ko) | 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링 | |
US8266369B2 (en) | Flash memory interface | |
JP3524110B2 (ja) | マイクロコンピュータシステム | |
US8918680B2 (en) | Trace queue for peripheral component | |
JP7470685B2 (ja) | 集積回路中の算出ユニットをプログラムおよび制御すること | |
TW202011203A (zh) | 指令處理方法及使用所述方法的儲存控制器 | |
US8117427B2 (en) | Motherboard, storage device and controller thereof, and booting method | |
JP2002132745A (ja) | ディジタル信号処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170522 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180516 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190515 Year of fee payment: 6 |