throbber
United States Patent [19J
`Clay
`
`I lllll llllllll Ill lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US005465338A
`[11] Patent Number:
`[ 45] Date of Patent:
`
`5,465,338
`Nov. 7, 1995
`
`[54] DISK DRIVE SYSTEM INTERFACE
`ARCHITECTURE EMPLOYING STATE
`MACHINES
`
`Primary Examiner-Jack B. Harvey
`Assistant Examiner-John Travis
`Attorney, Agent, or Firm-Fliesler, Dubb, Meyer & Lovejoy
`
`[75]
`
`Inventor: Donald W. Clay, Louisville, Colo.
`
`[73] Assignee: Conner Peripherals, Inc., San Jose,
`Calif.
`
`[21] Appl. No.: 110,883
`
`[22] Filed:
`
`Aug. 24, 1993
`
`Int. Cl.6
`•••••••••••••.••••.•.••••••.•••••••••••••••••••.•••••• G06F 13/00
`[51]
`[52] U.S. CI ........................... 395/310; 395/439; 395/894;
`395/404
`[58] Field of Search ..................................... 395/325, 425,
`3951500, 275
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`[57]
`
`ABSTRACT
`
`In a disk drive storage system, an interface apparatus for
`controlling the transfer of sectors of data between a host
`processor and a buffer within the storage system in response
`to READ and WRITE command issued by the host proces(cid:173)
`sor. The apparatus comprises a Byte Count State Machine
`for controlling the transfer of a sector of data between the
`host processor and the buffer, an Update Task File State
`Machine for counting the sectors transferred by the Byte
`Count State Machine and generating the sector address of
`the next sector to be transferred by the Byte Count State
`Machine, a Read State Machine for controlling the process(cid:173)
`ing of all READ commands and a Write State Machine for
`controlling the processing of all WRITE commands.
`
`5,276,662
`
`111994 Shaver, Jr. et al ........................ 369/32
`
`7 Claims, 18 Drawing Sheets
`
`HOST
`t
`
`16
`
`DATA REGISTER 2
`
`8
`
`8
`
`MULTIPLEXER
`
`3
`
`.----s---- BUFFER
`8---1
`11
`
`8----'
`
`BUFFER
`CONTROLLE
`9.__ ___ __,
`13
`
`COMPRESSOR
`25
`
`24
`
`AT REGISTERS..--•
`.& COUNTERS
`25
`
`BYTE COUNT
`STATE MACHINE
`4
`
`UPDATE TASK
`FILE STATE
`MACHINE
`
`5
`
`READ
`STATE
`MACHINE
`6
`
`WRITE
`STATE
`MACHINE
`7
`
`1
`
`KINGSTON 1007
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 1 of 18
`
`5,465,338
`
`I
`
`BUFFER
`-
`11
`' - - - - - - - '
`
`-
`
`____ ..,..- STATE MACHINES 10w--..af
`; BUFFER 13
`'--------____.•-
`rt CONTROL & ~
`_ _ -------------.~ REGISTER
`DATA
`-
`MULTIPLEXOR 12 ..,-------.
`I
`FIFO
`16
`'
`'~
`
`FIFO
`14
`
`._
`~7 ECC
`DETECTOR
`15
`
`-
`
`READ
`SEQ 1--
`
`17
`
`•
`
`I
`
`- FLASH
`-~ CONTROLLER
`21
`
`' •
`
`za
`
`"
`• r
`
`'
`
`' • ' l
`v-74
`
`r76
`
`75-.._
`r
`'r. r
`
`FLASH
`MEMORY
`51
`27
`
`HOST
`' .
`·~ r9
`.•
`• ,.65~ 144 SEL a . - - - - - - - - .
`-
`18 11111- - - - - - ,
`INTERFACE
`-
`CONTROL
`
`- - - - -
`
`1'
`
`64
`
`~ - COMPRESSOF -t:,
`
`19
`
`20
`
`22
`~ CRC
`GENERATOR.__
`
`r.f RAM 31 ~
`CRC
`CHECKER
`2_3
`- J . __ DECOMPRESSOA,,.-~~
`24
`
`L......r--
`
`,.
`• •
`
`AT
`- REGISTER~
`25
`
`- - - - - 69--._,
`ECC
`,,
`GENERATOR.._--',~ .•
`26 ... ..:--1--1, •
`
`' .
`~Q
`ROM RAM ..__.i- MICRO
`28
`29
`~ PROCESSOR.._-_ ___,
`QQ
`,L__ __ ~-~~~--~~
`t
`~ "..:--~
`L . . . - - - - - - - - ' FIG. 1
`
`2
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 2of18
`
`5,465,338
`
`READ
`
`INPUT CHS (CYCLINDER, HEAD AND
`SECTOR) AND SECTOR COUNT
`
`TRANSLATE CHS TO LSN
`(LOGICAL SECTOR NUMBER)
`
`SEND STATUS
`INVALID CHS
`
`YES
`READ NEXT SECTOR HEADER AFTER
`LAST STORED READ HEADER
`
`A
`
`READ HEADER
`ATTRIBUTE WORD
`
`READ OFFSET WORD
`
`NO
`
`.READ SECTOR
`TRANSLATION
`TABLE FOR LSN
`PFA (PARTIAL .
`FLASH ADDRESS)
`
`SEND STATUE
`SECTOR BAD
`
`SEND STATUS
`LSN NOT FOUNl"'\l ... 1--<
`
`FIG . . 2A
`
`3
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 3of18
`
`5,465,338
`
`FA (FLASH ADDRESS)
`• PFA +APPENDED
`SCAN COUNT
`
`SCAN COUNT • 0
`
`WRITE A SECTOR
`OF ZEROS INTO
`BUFFER
`
`F
`
`WRITE A SECTOR
`OF COMPRESSED
`ZEROS INTO BUFFER
`
`ADD 1 TO
`SCAN COUN
`
`FIG. 28
`
`4
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 4of18
`
`5,465,338
`
`READ SECTOR FROM FLASH
`MEMORY INTO BUFFER AND
`TO ECC DETECTOR
`
`SLOW DOWN ACCES
`AND RETRY READ
`
`NO
`
`YES
`TRY ERROR CORRECTION
`
`NO
`
`F i------t
`
`ROUTE SECTOR DAT
`DIRECTLY TO HOST
`
`.ROUTE SECTOR DATA
`THROUGH DECOMPRESSO
`TO THE HOST
`
`NO
`FLAG ERROR TO HOS
`
`ROUTE SECTOR DATA
`TO CRC CHECKER
`
`END
`
`FIG. 2C
`
`5
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 5of18
`
`5,465,338
`
`WRITE
`
`INPUT CHS (CYCLINDER, HEAD AN
`SECTOR) AND SECTOR COUNT
`
`TRANSLATE CHS TO LSN
`(LOGICAL SECTOR NUMBER)
`
`ROUTE
`YES SECTOR
`THROUGH
`COMPRESSO
`TO BUFFER
`
`ROUTE SECTO
`THROUGH CRC
`GENERATOR
`CRC BYTE TO
`BUFFER
`
`SEND STATUS
`INVALID CHS
`
`ROUTE SECTOR
`DIRECTLY TO
`.______ __
`BUFFER
`
`YES
`
`ROUTE SECTOR YES
`BACK THROUGH.------(cid:173)
`DECOMPRESSOR
`TO BUFFER
`
`NO
`
`SET SECTOR
`ATTRIBUTE AS
`UNCOMPRESSED
`
`SET SECTOR
`ATTRIBUTE AS
`COMPRESSED
`
`FIG. 3A
`
`6
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 6of18
`
`5,465,338
`
`A
`
`READ NEXT SECTOR HEADER AFTE
`LAST SECTOR MARKED AS DIRTY
`
`YES
`
`MARK
`HEADER
`DIRTY
`
`.READ SECTOR
`NO TRANSLATION
`~ .. TABLE FOR LSN
`PFA (PARTIAL
`FLASH ADDRESS)
`
`NO
`
`FA (FLASH ADDRESS
`• PFA + APPENDED
`SCAN COUNT
`
`.____.,
`NO
`
`ADD 1 TO
`SCAN COUNT
`
`SEND STATUS
`STANDBY
`
`FIG. 38
`
`7
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 7of18
`
`5,465,338
`
`WRITE HEADER AT
`NEXT AVAILABLE
`ADDRESS IN BLOC
`
`UPDATE TRANSLATION TAB
`WITH NEW PFA FOR SECTO
`
`TOP
`
`POINT FLASH WRITE
`WINDOW TO THE
`BEGINNING OF THE
`DATA AREA AS
`INDICATED BY THE
`OFFESET IN HEADER
`
`CHANNEL SECTOR
`THROUGH ECC
`GENERATOR TO
`FORM ECC DATA
`
`WRITE SECTOR
`FROM BUFFER
`AND ECC DATA
`TO FLASH
`
`YES
`
`ALLOCATE INTO NEXT
`AVAILABLE BLOCK
`
`FIG. 3C
`
`8
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 8of18
`
`5,465,338
`
`IN ITIAUZA TION
`
`SET PFA FOR ALL SECTORS
`IN THE TRASLATION TABLE
`TO ADDRESS FFFF
`
`SET FREE, DIRTY, AND NUMBER
`OF SECTORS REGISTERS TO 0
`
`READ BAD BLOCK DATA FROM ROM
`
`UPDATE TOTAL FREE
`FLASH IN BLOCK,
`CHIP AND ARRAY
`
`GO TO NEXT BLOCK
`
`YES
`
`READ NEXT HEADE
`
`MAINTAIN MAXIMUM
`CYCLE COUNT
`
`FIG. 4A
`
`9
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 9of18
`
`5,465,338
`
`A
`
`STORE PFA I
`TRANSLATION
`TABLE FOR
`HEADER LSN
`
`.MARK OL
`HEADER
`DIRTY
`
`YES
`
`MARK
`HEADER
`DIRTY
`
`UPDATE TOTAL
`DIRTY IN
`BLOCK & ARRA
`
`UPDATE TOTAL
`DIRTY IN
`BLOCK & ARRAY
`
`c
`
`FIG. 48
`
`10
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 10 of 18
`
`5,465,338
`
`HOST
`t
`16
`~
`DATA REGISTER 2
`HIGH BYTE
`LOW BYTE
`f
`f
`8
`8
`
`•
`
`•
`
`MULTIPLEXER
`
`.
`-
`
`8
`8
`
`..-8
`
`COMPRESSOR
`25
`
`•
`
`BUFFER
`11 ~
`
`' l
`
`8
`
`BUFFER
`CONTROLLER
`13
`
`1
`
`,
`DECOMPRESSOF
`24
`
`' '" . '"
`
`-
`--
`- 8
`3 14-8
`
`UPDATE TASK
`FILE STATE
`MACHINE
`
`5
`4 •
`
`f ' •
`
`4.
`
`' l
`
`' .
`. BYTE COUNT
`AT REGISTERS -
`- STATE MACHINE
`4
`.& COUNTERS
`25 ~
`
`h4
`-
`
`j
`
`READ
`__,. STATE
`MACHINE
`6
`
`WRITE
`STATE
`MACHINE
`7
`
`FIG. 5
`
`11
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 11 of 18
`
`5,465,338
`
`- NAN ....
`.
`.
`NA
`!':I 101
`'. ·NAN~
`.
`: 102
`.
`NA~
`123 .-
`~ .~ 127 ::
`--
`=•103 -
`'.
`-- 104"""
`
`100 ....
`
`NAN~
`
`NA
`:i105
`JNAN J--
`!".1106
`
`FIG. 6
`-
`AW
`• OFF
`
`-
`
`:
`:
`
`RW
`
`HOS
`T -
`NOT
`REA RX
`DYRW
`
`T
`SEC
`CNT
`-o
`BU<
`CNT
`-o
`
`RX
`
`AZ
`
`RY
`AW
`
`RY
`
`NOT
`END
`y
`DELA
`
`AZ
`
`G
`LON
`OK
`TO
`XFR
`
`.
`.
`
`'.
`
`..
`
`.
`
`. •
`
`.
`
`..
`, .-
`'
`••
`
`.
`.
`••
`
`. .
`••
`
`<r
`
`••
`
`••
`
`••
`'.
`,.
`
`,
`
`••
`••
`
`I'
`
`s
`T
`A
`T
`E
`
`D
`E c
`0
`D
`E
`R
`131
`
`RO
`--+
`--+
`R1
`f-+
`R2
`f-+
`R3
`f-+
`R4
`H
`RS
`-+
`R6
`--+
`R7
`RS
`--+
`--+
`R9
`--+
`RA
`RB
`H
`--+
`RC
`4
`RD
`H
`RE
`H
`RF
`
`NA~
`107 ~'.\: NA~
`
`•
`
`.f'NM
`-RX
`~108 ~1124~ .
`~ OFF
`~
`128 ::
`....____
`:J 109
`RX
`~NA"
`-
`~ 110 _.
`
`'
`
`.~
`
`..
`NA~~
`111
`' t.H NA~ -
`~ 112 -
`-
`'HNA~~
`! 113
`... NAN
`_RY
`. OFF
`~ 125
`""' ~~
`--RY
`r:
`129 ,_
`I
`' -- NA~ -
`, I' 115~
`0 NAN
`:i 11s
`.~-
`:i111 r
`ffiTI:J
`••
`1118
`'t.H NA~ ~c;;NAI'
`~ 119
`-AZ
`126 -
`-~OFF
`y NA~ ::>-I
`---: ""
`~ --~ AZ
`130 -
`• 120
`'
`
`••
`
`,.
`,.
`, .
`,.
`
`,
`
`BYTE
`CNT
`NOT
`-o
`
`I
`
`NOT
`DATA
`,,,
`READ
`BU<
`CNT
`-o
`
`SEC -o T CNT
`
`:J 121
`·'NAN
`~122 i-.
`"""'
`
`-
`
`._RESET
`...._CLOCK
`
`12
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 12 of 18
`
`5,465,338
`
`I tJ r STATE o
`9READ MODE?
`lv
`
`STATE 1
`LO BYTE CNT
`LO BLK CNT
`UPDATE TASK
`FILE
`• .L ~
`
`I__
`l!!
`
`N
`-
`
`·.1rY
`STATE B
`DATA READY?
`GATE 1 ST WORD
`.. .Ir
`. J. y
`STATE A
`HOST READY?
`CLK COMPRESSOR
`
`lv
`
`STATE E
`RST LONG
`LO BYTE CNT
`GATE 1 ST WORD
`
`y
`
`STATE 2
`SET DRQ
`AST BSY
`SET IRQ
`.. l ~
`~ STATE 6
`·~ BYTE CNT• O?
`lY
`STATE 4
`STATE 8
`STATE C
`SECT CNT• O?
`N AST RD MODE
`LONG ?
`SET XFER DONE Y
`DEC BLK CNT i--___.; EN ECC XFER ..:..:...e RST ECC XFEF
`AST 1016
`INC XFER REL
`AST DRQ
`lN
`SET BUSY
`f STATE 5 l
`l
`STATE D
`STATE F
`N
`LOAD SECT DEIJ\ Y _. rl DEIJ\Y
`STATE 7
`AST DAQ
`• ~
`ENDED ?
`Y
`..._ BLK CNT • 0 ?
`UPDATE TASK FILE~ LO BLK CNT
`IN
`LO BYTE CNT
`SET BUSY
`CLK COMPRESSOR
`FIG . . 7
`
`!__
`
`13
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 13 of 18
`
`5,465,338
`
`- ~ . .
`--
`.
`-.
`.
`. .
`.
`..
`
`~
`
`L_
`,___
`
`1.
`
`,.
`
`...
`
`FIG. 8
`
`.....-
`
`OFF WA;
`.
`r;::i 228 -
`-
`•
`._____
`WA
`
`n 200 :;
`'.•NAN
`:201 ~
`NAN
`NA1'
`202
`224 :.
`--
`NAi-,
`203 . -
`.
`......_
`~NA~_
`.
`n204 -
`206 -
`
`NANh
`207
`L
`
`NAfl
`,_
`
`225 -E"~ 229 :
`·15FF WB:
`.
`..___
`we
`
`......_
`
`'
`
`WC
`
`WD
`
`WB
`WBWA
`WDWC
`SECT CNT
`NOT•O
`
`END DELA~.·
`...
`...
`
`SECT CN7
`-o
`
`WA
`
`OK TOXF"':
`
`SECT CN7
`-o
`LONG
`
`...
`
`.
`
`NANP-
`205
`'LH NAN,_
`...
`
`...
`
`'•
`ro
`
`NAN
`208 ::
`...
`1NAN
`1209
`.....
`• t. .... NAN_
`...
`• 210 -
`.
`...
`...
`...
`
`s
`T
`A
`T
`E
`
`H
`WO
`H
`W1
`W2
`~
`W3
`~ ,_.._.
`W4
`W5
`~ ,_.._.
`W6
`W7 wa
`~
`~
`4
`W9
`4
`WA
`H
`WB
`4
`WC
`4
`WO
`H
`WE
`WF
`~
`
`D
`E
`c
`0
`D
`E
`R
`_we
`. OFF
`:
`232
`.E" ~ 230 ~ •
`. ..___
`WC
`
`~
`.. ~~
`. ~AN[ 213
`~ 214
`
`1
`
`: ANC
`212
`
`t
`
`OR
`226
`
`I
`~ANn1
`n215~
`ANC
`216~
`-
`....___~AN
`.
`n217
`.__ NAN_
`218 -
`
`...
`...
`.
`...
`
`...
`
`BLK CNT
`NOT•O
`BYTE CN7
`NOT•O
`LONG
`
`BLK CNT
`-o
`SECT CN-
`-o
`
`NA~
`"NAN ----
`P-
`219
`220 -
`... ~ :1221
`NA~
`222 ...,-
`-
`nNAN
`~223
`
`NA~
`.-WD.
`227 '::.
`•
`--~OFF
`' ... • 231 :.
`.
`..___
`WO
`
`----
`
`-RESET
`CLOCK
`
`....
`
`14
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 14 of 18
`
`5,465,338
`
`L
`
`~
`
`I
`
`L
`
`•
`
`N
`
`-
`
`~ J.,
`STATE 0
`WRITE MODE?
`!Y
`STATE 2
`SET WRITE START
`~
`~ .L.
`STATE 3
`OK TO XFERll
`.I
`1Y
`STATE 7
`LO BYTE CNT
`LO BLK CNT
`SET DRQ
`RST BUSY
`SET IRQ
`L J. ~
`• J.,
`STATE 6
`BYTE CNT-0
`1v
`STATE 4
`SET XFR DONE
`UPDATE TASK FILE
`DEC BLK CNT
`INC XFR REL
`
`N
`STATE E
`
`1 J SECT CNT •O
`LO BYTE CNT
`y !
`I
`STATE F
`
`N
`
`STATE C
`BLCK CNT • O?
`RST 1ST WRITE
`y~
`
`, '.
`
`STATE D
`SECT CNT•O?
`SET BUSY
`RST DRQ
`y
`
`N
`
`STATE 9
`.. LD DELAY
`
`L
`
`y
`STATE B
`
`' ... END DELAY?
`
`L
`
`N
`
`STATE 5
`LONG?
`y RSTLONG
`RST 1016
`EN ECC XFR
`
`-
`
`STATE 1
`~ RST DRQ
`RST WRITE MODE
`RST ECC XFR
`
`FIG. 9
`
`15
`
`

`

`RF~
`~~LO BLKCNT
`
`RE~
`ws~RSTLONG
`
`R4*
`W4*
`
`~~RSTI016
`
`R7--f0Rl-+ CLK CMPRS
`RA~
`
`UPDATE
`TASK FILE
`
`o-----. INC XFER REL
`
`U.S. Patent
`
`Nov.7, 1995
`
`Sheet 15 of 18
`
`5,465,338
`
`R1~
`w1~RSTWM
`
`DEC BU< CNT
`
`~~~O
`
`700
`
`R7
`W7
`WE
`
`EN E~NW7*
`
`-ET_D_R_Q
`
`LO BYTE CNT W7 ~ NO
`R2-708
`W4*
`OR
`---110
`
`~~~ LONG,-(cid:173)
`
`712
`
`AST DRQ WD
`
`WO*
`W1
`
`SET BUSY
`
`~~~XFER DONE
`
`W2
`
`- - - -WR START
`
`GATE 1ST
`WORD
`
`1STOP
`
`~~~EN ECC XFER
`
`~~~AST ECC XFER
`
`R1
`
`«fe ~LO SECT DELAY CNT RS
`FIG. 10
`
`16
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 16 of 18
`
`5,465,338
`
`RESET-(cid:173)
`CLOCK----.
`
`DECR
`,...---.... SECT
`CNT
`
`A ~~r;;;;:;i
`B --+--
`.UPDATE
`TASK ____ ...,__..
`FILE
`......___.
`
`SECT CNT • 0 - - (cid:173)
`FIRST OP-----~~
`
`SECT
`AT
`MAX
`
`HEAD
`AT
`MAX
`RESET-
`
`OFF SECT MAX
`312
`
`SECT MAX
`OFF HEAD MAX
`313
`
`HEAD MAX
`
`FIG. 11
`
`17
`
`CLR HEAD
`INC CYL
`
`INC HEAD
`
`CLR SECT
`
`INC SECT
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 17 of 18
`
`5,465,338
`
`CLOCK---------+--(cid:173)
`BLK CNT • 1 ---. ..
`BYTE CNT •0-----11
`GATE
`1ST
`WORD
`
`HIOR-----1...t~;::;i
`
`WRITE
`--DATA
`
`DECR
`BYTE
`CNT
`D * t - - - - . ARD
`
`.r«>---1--... CU< HIGH BYTE
`-+tt...:.::...r----r---. CLK HIGH BYTE
`
`CLK
`
`RSTPr-----t~-----tt=~
`
`FIG. 12
`
`18
`
`

`

`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 18 of 18
`
`5,465,338
`
`~
`
`~
`
`"1,
`STATE 0
`UPDATE TASK FILE?
`!Y
`STATE 1
`DECR SECT CNT
`SECT CNT•O?
`
`.!!.
`....
`
`y
`
`-
`
`STATE 2
`LATCH HD AND
`SECT COMPARE
`·~
`
`N
`
`. STATE 3
`• INC TASK FILE
`
`FIG. 13
`
`_N_ STATE 0
`I OW /I OR?
`y
`
`STATE 1
`DECR BYTE CNT
`CLK LOW BYTE
`
`STATE 3
`
`STATE 2
`GATE HIGH BYT
`
`STATE 4
`
`STATE 5
`DECR BYTE CNT
`CLK HIGH BYTE
`
`STATE 7
`
`STATE 6
`
`FIG. 14
`
`19
`
`

`

`5,465,338
`
`1
`DISK DRIVE SYSTEM INTERFACE
`ARCHITECTURE EMPLOYING STATE
`MACHINES
`
`BACKGROUND OF THE INVENTION
`
`15
`
`2
`To have a solid state drive emulate a magnetic disk drive,
`the solid state storage media must be transparent to the host.
`Ideally, the solid state drive would accept the same com(cid:173)
`mands and data formats as the magnetic disk drive such that
`no change in programming or system configuration need be
`done within the host. A disadvantage associated with most
`solid state memories is the time necessary to write into the
`memory. The slow write speed is a major reason why the
`solid state drives emulating magnetic disk drives have not
`10 been more widely accepted and marketed within the indus(cid:173)
`try.
`At present, both in magnetic disk drives and in flash disk
`drives, a microcontroller is employed for controlling the
`operation of the storage system. One of the functions of the
`microcontroller is to control the transfer of data across the
`host interface between the host processor and the storage
`media within the drive system. This requires that the micro(cid:173)
`processor dedicate resources to transfer data between the
`host computer and the storage system across the interface in
`response to READ and WRITE commands. This require(cid:173)
`ment limits the microprocessor's availability to perform
`other functions and, therefore, results in a limitation on the
`overall system performance of the storage system. In mag(cid:173)
`netic disk drive storage systems, some attempts have been
`made to unburden the microprocessor by transferring some
`of the functions of the microprocessor to state machines or
`to have a two microprocessors involved in performing the
`functions thereby reducing the workload on each micropro(cid:173)
`cessor and allowing two functions to be in process at the
`same time. In particular, the flash solid state drive system
`requires the microprocessor to be involved in housekeeping
`operations with regard to . the flash memory, as well as
`controlling the reading and writing of data from the memory
`buffer to the flash memory itself. This increased responsi(cid:173)
`bility on the microprocessor further reduces the system
`performance due to the time necessary to perform the
`increased functions allocated to the microprocessor.
`
`20
`
`1. Field of the Invention
`The present invention relates generally to digital data
`storage systems and more particularly to an AT interface
`architecture employing state machines for use in a digital
`data storage system. More particular still, the invention
`relates to a flash solid state memory system that employs the
`AT interface architecture comprising state machines.
`2. Description of the Related Art
`Magnetic disk drives have been widely accepted in the
`computer industry and are used for storing large amounts of
`data. Over the years, magnetic disk drives have decreased in
`size while increasing in operational speed and in the amount
`of data that can be stored on the magnetic media. Magnetic
`disk drives have associated with them a seek latency time
`which is associated with the time necessary to move the
`desired transducer to the desired track or cylinder on the
`magnetic media for the purpose of recovering or writing data
`to and from the magnetic media. In addition, there is a 25
`rotational latency associated with waiting for the desired
`data sector to pass underneath the transducer once the
`transducer is located on the desired track. Magnetic disk
`drives also have the associated problems of relying on
`mechanical hardware for locating the transducer at a specific 30
`location with regards to the magnetic media and for main(cid:173)
`taining the rotational speed of the magnetic media at some
`constant value. The mechanical hardware is affected by the
`normal wear and tear associated with mechanical devices.
`Further, magnetic disk drives have employed various track 35
`following servo systems for maintaining the transducer on a
`desired track once the transducer reaches that desired track.
`Finally, the magnetic disk drive tracks are divided into a
`fixed number of sectors where each sector stores a fixed
`number of data bytes. As a rule, magnetic disk drive systems 40
`will write a complete sector each time a sector is written.
`Where the data is less than a full sector the data is padded
`with zeros to fill up the sector. This is to say that if the sector
`length is 512 bytes, whenever a sector is written 512 bytes
`of data will be written into that sector. The requirements of 45
`writing a full sector every time a sector is written means that
`a substantial portion of the magnetic surface may be allo(cid:173)
`cated to contain filler data rather than useful data. Finally, it
`can readily be realized that the data would also be recovered
`from the magnetic disk drive in sector lengths and, therefore,
`a full sector must be read from the disk regardless of the
`actual amount of useful data that was recorded in that sector.
`With the advent of solid state memories, attempts have
`been made to elTilllate the magnetic disk drives by use of
`solid state memories in place of the magnetic media. 55
`Examples of such emulations are found in U.S. Pat. No.
`4,642,759 entitled "Bubble Memory Disk Emulation Sys(cid:173)
`tem" and U.S. Pat. No. 5,131,089 entitled "Solid State Disk
`Drive Emulation".
`The ideal system would use a solid state memory that is 60
`nonvolatile such as the above-referenced bubble memory or
`the solid state memory with its own power supply to
`maintain the stored data even though power is turned off to
`the drive. However, each of these solid state memories each
`have their own advantages and disadvantages which must be 65
`weighed in selecting which solid state memory should and
`could be used in a specific design.
`
`SUMMARY OF THE INVENTION
`
`Accordingly, it is an object of the invention to provide an
`AT interface architecture comprised of state machines such
`that the microprocessor is not involved in the transfer of data
`between the host and the buffer within the storage system.
`Another object of the invention is to provide a Read State
`Machine, a Write State Machine, a Byte Count State
`Machine and an Update Task File State Machine which
`perform and control the transfer of data between the system
`and the host across the host interface.
`Another object of the invention is the coaction between
`the Read State Machine, the Byte Count State Machine and
`the Update Task File State Machine for controlling the
`transfer of data during a READ operation, that is the transfer
`of data from the buffer within the storage system to the host.
`Still another object of the invention is the coaction
`between the Write State Machine, the Byte Count State
`Machine and the Update Task File State Machine during a
`WRITE operation, that is the transfer of data from the host
`to the buffer within the storage system.
`Briefly, there are four state machines in the AT interface
`architecture that are used to control the overall operation of
`data transfer to and from the host. A Write State Machine
`controls the overall operation of write commands, ie write
`sectors, write sector long, write multiple, write buffer, or
`write DMA. A Read State Machine controls the operation of
`the read commands, ie read sectors, read sector long, read
`
`50
`
`20
`
`

`

`3
`multiple, read buffer, or read DMA. An Update Task File
`State Machine tracks the number of sectors processed and
`then generates; a signal to increment the sector address. A
`Byte Count State Machine controls the conversion of words
`to bytes and the transfer of data between the host and the 5
`storage system.
`The operation of the four state machines are intertwined.
`The Read and Write State Machines control the overall
`operation of the data transfer and are mutually exclusive. At
`the point of the transfer for either a READ or WRITE IO
`operation where the task file needs to be updated, the Read
`or Write State Machine will initiate a cycle of the Update
`Task File State Machine. When either the Read or Write
`State Machines are started, the Byte Count State Machine is
`activated. The Byte Count State Machine generates pulses to 15
`decrement the byte counter every time that a byte of data is
`transferred to or from the data register to control the transfer
`of data during a READ or WRITE operation. The Read and
`Write State Machines hold in their cycle awaiting for the
`byte count to go to zero as controlled by the Byte Count 20
`State Machine. The Read State Machine issues a gate first
`word signal to tell the byte count machine to stage the first
`two bytes into the data register so that the first two bytes will
`be ready when the host starts reading data.
`The state machines interact with the AT registers. The task 25
`file count register is used to keep the number of sectors
`transferred. The head and sector configuration registers are
`used to tell when the task file and sector registers should be
`wrapped. The byte count register, which is fed from the ECC
`size register and the transfer size register, is used to count the
`number of bytes in the sector or the number of ECC bytes
`to be transferred. The block count register is loaded with a
`one for all but the read multiple command and for a read
`multiple command with the number of sectors to be trans(cid:173)
`ferred in each block. The byte count register generates 35
`signals when the byte count register contains either a zero or
`a one.
`An advantage of the AT interface employing state
`machines is that the microprocessor within the storage
`system is relieved of the task of controlling the transfer of
`data to and from the host processor from the memory buffer
`within the storage system, thereby increasing system per(cid:173)
`formance.
`
`30
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`50
`
`The invention will be described with respect to the
`particular embodiments thereof and references will be made
`to the drawings, in which:
`FIG. 1 is a logic diagram of the flash solid state drive;
`FIGS. 2A through 2C is a flow chart setting forth the
`operation of the flash solid state drive for a read operation;
`FIGS. 3A through 3C is a flow chart setting forth the
`operation of the flash solid state drive for a write operation; 55
`FIGS. 4A and 4B is a flow chart setting forth the operation
`of the flash solid state drive to initialize the sector translation
`table during the power up sequence;
`FIG. 5 is an overall logic diagram of the major compo(cid:173)
`nents of the ATA interface including the four state machines. 60
`FIG. 6 is a logic diagram of the Read State Machine;
`FIG. 7 is a flow chart of the operation of the Read State
`Machine;
`FIG. 8 is a logic diagram of the Write State Machine;
`FIG. 9 is a flow chart of the operation of the Write State
`Machine;
`
`21
`
`5,465,338
`
`4
`FIG. 10 is the control logic controlled by both the Read
`and Write State Machines for providing control signals to
`the storage system during a read and write operation and to
`the host processor during a read and write operation;
`FIG. 11 is a logic diagram of the Update Task File State
`Machine;
`FIG. 12 is a logic diagram of the Byte Count Stale
`Machine;
`FIG. 13 is a flow chart of the operation of the Update Task
`File State Machine; and
`FIG. 14 is a flow chart of the operation of the Byte Count
`State Machine.
`
`DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`
`SYSTEM ARCHITECTURE
`
`FIG. 1 is a logic diagram showing the components of the
`flash solid state drive. The flash solid state drive is 100%
`hardware and software compatible with ATA/IDE lnterface
`standards and will support all mandatory AT-Attachment
`standard commands.
`Flash memory 27 is comprised of thirty Intel 28F008 flash
`chips 51 where the chip data size is 8 Mb and 8 bits of data
`are simultaneously written into or read from the flash chip.
`Two flash chips are paired together and addressed at the
`same time such that 16 bits may be written or read simul(cid:173)
`taneously into or from the flash memory. To accomplish this
`flash controller 21 is dual ported so as to provide both
`address and data to each flash chip of a chip pair by means
`of lines 73 through 76. The flash solid state drive is con(cid:173)
`trolled by microprocessor 30 in conjunction with an oper-
`ating program stored in ROM 28. Microprocessor 30 is also
`connected to RAM 29 to allow the dynamic storing of data
`necessary for controlling the operation of the drive. Micro(cid:173)
`processor 30 is connected to AT registers 25, to interface
`control circuitry 19, to flash control 21, to data multiplexer
`40 12, to ECC generator 26, to buffer control and registers 13
`and to ECC detector 15.
`For a write operation, data for a sector is received from the
`host on bus 9 to interface control 19. If the sector data is to
`be compressed, the sector data is transferred via line 64 to
`45 compressor 20 for data compression and through CRC
`generator 22 for generating CRC data. Data compressor 20
`is a LEMPAUZIV type data compressor. The compressed
`sector data, after being compressed, is stored in buffer 11.
`After the compressed sector data has been stored in buffer 11
`the CRC data byte is stored in buffer 11 and made part of the
`data associated with the sector being stored.
`If the sector data was not to be compressed, then the sector
`data would leave interface control 19 on line 65 and pass
`directly through selector 18 , FIFO 14 and data multiplexer
`12 into buffer 11. State machines 10 contains a Write State
`Machine which controls the sequence of operations during a
`write operation. Once the data for the sector, either com(cid:173)
`pressed or uncompressed, has been stored in buffer 11, the
`Write State Machine will then transfer the sector data from
`data multiplexer 12 to microprocessor 30. Microprocessor
`30 acts as a dual port microprocessor where the ports are
`connected to data multiplexer 12 by means of buses 57 and
`69. When sector data is transferred from buffer 11 to
`microprocessor 30 the sector data is also passed through
`65 ECC generator 26 to generate the ECC data. The ECC data
`is also provided to microprocessor 30. Microprocessor 30
`transfers the sector data and ECC data as data words, where
`
`

`

`5,465,338
`
`5
`each data word consists of two bytes of data,to flash con(cid:173)
`troller 21. Microprocessor 30 performs the task of taking
`two sequential bytes of sector data from buffer 11 or ECC
`data and forming data words for flash controller 21. Flash
`controller 21 then writes the data word into the flash memory
`27.
`During a read operation, the read command is received
`from the host on bus 9 by interface control 19. State machine
`10 includes a Read State Machine which controls the
`sequence of operation during the read procedure. The data is 10
`read from flash memory 27 by flash controller 21 in data
`word format. Read sequencer 17 receives the data word and
`provides sequentially each of the two bytes of data making
`up the received data word to speed matching buffer FIFO 16.
`Read sequencer 17 also routes the data bytes to ECC 15
`detector 15 for the detection of an error in the read data. The
`output of FIFO 16 is routed through multiplexer 12 to buffer
`11. When the data for a sector has been stored in buffer 11
`and no data error was detected by ECC detector 15, the
`sector data is then directed from buffer 11 through data 20
`multiplexer 12 and speed matching buffer FIFO 14 to
`selector 18. If the sector data was compressed, then the
`sector data is routed from selector 18 through decompressor
`24. The decompressed sector data from decompressor 24 is
`routed to CRC checker 23 and to interface control 19 for 25
`transmission to the host. If CRC checker 23 detects a CRC
`error, a flag is raised to the host indicating that an error exists
`in the sector data that was transmitted for that sector. If the
`read sector data was not compressed, selector 18 will route
`the sector data via line 65 to interface control 19 which will
`then route the data to the host via bus 9.
`State machines 10 also contains a between sector state
`machine for updating the task file registers and a Byte Count
`State Machine for maintaining of the number of bytes of data
`transfer during a read or write operation.
`AT registers 25 and buffer control registers 13 are used to
`control the sequence of operation in conjunction with the
`microprocessor performing the operation program as stored
`in ROM 28 and the operation of the various state machines. 40
`Buffer control and registers 13 include a tie breaking state
`machine to resolve conflicts in the data multiplexer 12 for
`access to buffer 11 and a buffer signal state machine for
`controlling the reading and writing of data into and out of
`buffer 11.
`The function of and description of the AT registers 25 and
`buffer registers 13 are as follows:
`
`35
`
`45
`
`AT REGISTERS
`
`6
`The register is used by the Host to indicate how many
`sectors are to be transferred on a read or write command.
`4. TASK FILE SECTOR REGISTER
`This register contains the logical sector requested by the
`5 host.
`5. TASK FILE SDH REGISTER
`bit 4 - Drive address
`bit 3 - Head bit 8
`bit 2 - Head bit 4
`bit 1 - Head bit 2
`bit 0 - Head bit 1
`6. TASK FILE CYLINDER LOW REGISTER
`This register and the following register contain the cyl(cid:173)
`inder requested by the Host.
`7. TASK FILE CYLINDER HIGH REGISTER
`8. COMMAND REGISTER
`This register is used by the Host to communicate the
`desired command. When either the Host or the drive write
`this register, the drive will become busy. When the drive is
`busy, only the drive may write the task file. When the drive
`is not busy, only the Host may write the Task File unless the
`drive writes OD bit 3 to enable the microprocessor access to
`the Task File registers.
`9. SECTOR CONFIGURATION REGISTER
`This is a 8 bit register used to determine the sector wrap
`point for the Host values.
`10 HEAD CONFIGURATION REGISTERS
`This is a 4 bit register used to determine the head wrap
`30 point for the Host values.
`bit 3 - Head bit 8
`bit 2 - Head bit 4
`bit 1 - Head bit 2
`bit 0 - Head bit 1
`11. DIGITAL ADDRESS REGISTER
`This register is the same as that read at 3F7 by the Host
`with the exception that bit 7 is a one instead of tristate as it
`is to the interface.
`bit 7 - Always 1
`bit 6 - Always 1
`bit 5 - Head bit 3-
`bit 4 - Head bit 2-
`bit 3 - Head bit 1-
`bit 2 - Head bit O(cid:173)
`bit 1 - Drive 1-
`bit 0 - Drive 0-
`12. AT CONTROL REGISTER
`This register contains status bits for use by the microcode.
`It is read only.
`bit 7 - Sector>maximum logical sector
`This bit contains the result of a comparison of the Task
`File Sector Number register and the Sector configura(cid:173)
`tion register.
`bit 6 - Head>maximum logical head
`This bit contains the result of a comparison of the Task
`File SDH register head value and the Head configura(cid:173)
`tion register.
`bit 5 - Count equal to 0
`This bit is 1 when the Task File Count Register is equal
`to 0.
`bit 4 - ECC Error
`This bit is 1 when an ECC error is detected. The ECC
`should be reset by toggling AT Res 1 in the Micropro(cid:173)
`cessor's reset register before continuing.
`
`50
`
`1. TASK FILE ERROR REGISTER
`This register is the error indicating register to the Host. It
`has bit significance except at power on or during the
`diagnostic command. It is a read only register to the Host.
`bit 7 - Bad Block
`bit 6 - ECC Data Check
`bit 4 - ID Not Found
`bit 2 - Aborted Command
`bit 1 - Track 0 Not Found
`bit 0 - Address Mark Not Found
`2. TASK FILE PRECOMP REGISTER
`This register is a write only register to the Host. It was
`previously used to indicate at what cylinder to begin pre(cid:173)
`compensation. It is used for other commands at this point in 65
`time.
`3. TASK FILE COUNT REGISTER
`
`55
`
`60
`
`22
`
`

`

`5,465,338
`
`8
`7
`This register is setup to allow bit operations to be done.
`bit 3 - Byte count equal to 0
`When it is read, it always returns FFh. To pulse any of these
`This bit is one when the transfer count register that counts
`bits, a zero is written.
`the number of bytes to be transferred on the interface
`bit 7 - Set Host IRQ.
`is=O.
`bit 2 - IOR & IOW equal to 0
`This bit sets the Host interrupt which is gated by the Host
`interrupt enable.
`This bit is for use in PCMCIA inter

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket