US20010011318A1 - Status indicators for flash memory - Google Patents

Status indicators for flash memory Download PDF

Info

Publication number
US20010011318A1
US20010011318A1 US08/814,928 US81492897A US2001011318A1 US 20010011318 A1 US20010011318 A1 US 20010011318A1 US 81492897 A US81492897 A US 81492897A US 2001011318 A1 US2001011318 A1 US 2001011318A1
Authority
US
United States
Prior art keywords
status
signal
memory device
memory
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US08/814,928
Inventor
Vishram P. Dalvi
Rodney R. Rozman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to US08/814,928 priority Critical patent/US20010011318A1/en
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ROZMAN, RODNEY R., DALVI, VISHRAM P.
Priority to US09/557,184 priority patent/US6671785B2/en
Publication of US20010011318A1 publication Critical patent/US20010011318A1/en
Priority to US10/927,338 priority patent/US7093064B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/20Suspension of programming or erasing cells in an array in order to read other cells in it
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/22Nonvolatile memory in which reading can be carried out from one memory bank or array whilst a word or sector in another bank or array is being erased or programmed simultaneously

Definitions

  • the present invention relates to the field of semiconductor memories. More particularly, the present invention relates to providing a programming suspend status signal and a protection status signal for a nonvolatile memory.
  • Status registers are often used to store status information relating to the internal operations of a semiconductor integrated circuit (“IC”).
  • Memory ICs or devices such as flash electrically erasable programmable read only memory (“EEPROM”) devices, may store information in a status register to indicate whether an operation (e.g., an erase operation, a programming operation, a read operation, etc.) is in progress or is completed.
  • the status register may also indicate whether a specific operation has been completed successfully or unsuccessfully. Such information often provides necessary or desirable information to other components in a system.
  • the processor or CPU in a system may need to know when an erase operation performed on a memory device (such as a flash memory device) is completed before requesting the memory device to perform a programming operation. Additionally, the processor in a system may want to know whether an erase operation to a specific memory location has been suspended. Typically, an erase operation takes a much longer time to complete as compared to a programming or read operation. For example, an erase operation may take a few milliseconds (“ms”), whereas a programming operation may take 7-8 microseconds (“ ⁇ s”) and a reading operation may take 85 nanoseconds (“ns”). Thus, when an erase operation to a specific memory location is suspended, the processor may program or read data from a different memory location rather than waiting for the completion of the current erase operation. The ability to suspend an erase operation may improve the overall performance of a flash memory device.
  • ms milliseconds
  • ⁇ s microseconds
  • ns nanoseconds
  • a status register stores multiple memory bits in which one or more of the memory bits may be used to provide a specific status signal.
  • the status signal may be sent as an output from the memory device via a designated output pin when polled or via the data input/output (“I/O”) pins of a memory device in response to a read status register command.
  • FIG. 1 illustrates one embodiment of a status register for a prior art flash memory device that is capable of performing programming, erase, and read operations.
  • the status register 100 includes the five memory locations 101 through 105 with each memory location storing at least one memory bit. For the embodiment shown in FIG. 5, the status register 100 provides five status signals.
  • the memory location 101 stores Vpp status (“VPPS”) information; the memory location 102 stores byte write and set lock bit status (“BWSLBS”) information; the memory location 103 stores erase and clear lock bits status (“ECLBS”) information; the memory location 104 stores erase suspend status (“ESS”) information; and the memory location 105 stores write state machine status (“WSMS”) information.
  • BWSLBS byte write and set lock bit status
  • ECLBS erase and clear lock bits status
  • ESS erase suspend status
  • WSMS write state machine status
  • the VPPS information indicates whether Vpp, the programming voltage, is at an acceptable voltage level or not at an acceptable voltage level. If Vpp is not at an acceptable voltage level, then the current operation may be aborted.
  • the BWSLBS information indicates an unsuccessful byte write operation or a successful byte write operation. Alternatively, the BWSLBS information indicates an unsuccessful set master/block lock bit operation or a successful set master/block lock bit operation.
  • the ECLBS information indicates an unsuccessful block erasure operation or a successful block erasure operation. Alternatively, the ECLBS information indicates an unsuccessful clear lock bits operation or a successful clear lock bits operation.
  • the ESS information indicates that the block erase operation is suspended or that the block erase operation is in progress/completed.
  • the WSMS information indicates that the write state machine is ready or is busy.
  • the VPPS signal, the BWSLBS signal, the ECLBS signal, the ESS signal, and the WSMS signal are provided are outputted in response to a read status register command. Furthermore, the WSMS signal is outputted by polling a dedicated status output pin (e.g., pin).
  • a dedicated status output pin e.g., pin
  • a prior art protection mechanism was implemented by the setting and clearing of memory bits (i.e., lock bits) that correspond to the various memory blocks in the memory device.
  • the lock bits are stored in a miniature array referred to as the block lock mini-array.
  • the lock bits within the block lock mini-array are set to indicate that the corresponding memory block is locked, and cleared (or not set) to indicate that the corresponding memory block is unlocked.
  • a read, program, or erase operation may be performed on any unlocked memory block.
  • a program base operation may not, however, be performed on any locked memory block unless an override lock operation is first performed on the locked memory block.
  • a memory device has a control circuit coupled to a memory array and a register.
  • the register is configured to store at least one bit indicating the suspend status of a write operation.
  • the control circuit is configured to update the register and to control the output of a status signal representing the suspend status of the write operation.
  • a memory device has a control circuit coupled to a memory array and a register.
  • the register is configured to store at least one bit indicating the protection status of a data modification operation.
  • the control circuit is configured to update the register and to control the output of a status signal representing the protection status of the data modification operation.
  • a method is also described for providing the suspend status of a programming operation in a memory device.
  • a programming operation to a memory location is performed.
  • a suspend status signal is received prior to the completion of the programming operation. It is determined whether or not to suspend the programming operation. If the programming operation is suspended, a status register is updated, if necessary, to indicate the programming operation is suspended. An output signal is provided to indicate the suspend status of the programming operation.
  • a method is also described for providing the protection status of a data modification operation in a memory device.
  • a data modification operation is issued with respect to a memory location.
  • the protection status of the memory location is determined.
  • An output signal is provided to indicate the protection status of the memory location.
  • FIG. 1 illustrates a prior art status register
  • FIG. 2 illustrates a computer system that includes one embodiment of the memory device.
  • FIG. 3 illustrates a CPU coupled to one embodiment of the memory device.
  • FIG. 4 illustrates one embodiment of the status register.
  • FIG. 5 illustrates a flow chart for initializing one embodiment of the status register.
  • FIG. 6 illustrates a flow chart for performing a programming or erase operation for one embodiment of the memory device.
  • FIG. 7 illustrates a flow chart for performing a block lock check for one embodiment of the memory device.
  • FIGS. 8 through 12 illustrate a flow chart for a programming operation.
  • FIGS. 13 through 17 illustrate a flow chart for an erase operation.
  • One embodiment of the memory device optimizes the memory to processor interface by providing a programming suspend status signal.
  • the programming suspend status signal is used to indicate the current execution status (i.e., whether a programming operation is suspended or is not suspended) of a programming operation.
  • the programming operation is a byte write operation.
  • the processor may request that a read operation be performed on another memory location.
  • the processor may not be required to wait until the entire programming operation to a first memory location is completed (which may be an unacceptable time) before reading from a second memory location. In certain situations, this feature may improve the efficiency of the computer system.
  • One embodiment of the memory device optimizes the memory to processor interface by providing a protection status signal. This signal is used to indicate whether the memory location accessed by a program or erase operation resides in a protected memory block or an unprotected memory block.
  • a protected memory block is referred to as a locked memory block and an unprotected memory block is referred to as an unlocked memory block.
  • the data stored in an unlocked memory block may be modified by a program or erase operation; however, the data stored in a locked memory block may not be modified unless the memory block is first unlocked by an override operation.
  • This feature of providing a protection status signal typically allows the processor to differentiate between a program or erase operation that failed due to an attempt to access a memory location in a memory block that was protected (e.g., block locked) versus a program or erase operation that failed due to a power failure or a bad block.
  • One intent is to improve the efficiency of the computer system.
  • the purpose of the protection status signal is to provide the user with meaningful information about an operation. If the user finds out that the operation (for example, a byte write operation) failed because of block protection, the user can unlock the block and reissue the command. But if the operation failed because of a bad block, then the user will not try to write again to the same location. That is why the differentiation between the two types of failures is advantageous.
  • An analogy would be being unable to open a car door because the door is locked versus because the door is jammed. In the former case, one uses a key to open the door. In the latter case, one calls a mechanic to fix the door.
  • One embodiment of the memory device may be used in various types of computer systems or data processing systems.
  • the computer system within which the memory device, such as a flash memory device, is used can be a personal computer, a notebook computer, a laptop computer, a personal assistant/communicator, a minicomputer, a workstation, a mainframe, a multiprocessor computer, or any other type of computer system.
  • the system in which the memory device is used can be a printer system, a cellular phone system, a digital answering system, a digital camera, or any other system that requires data storage.
  • FIG. 2 illustrates one embodiment of a general purpose computer system 10 .
  • the computer system 10 may include a power supply 11 , a central processing unit (“CPU”) 12 , a main memory 13 , a flash memory 14 , a mass storage device 15 , a frame buffer 16 , and an input device 18 , all of which are coupled to a bus 19 .
  • Data may be transferred among the various components in the system 10 via the bus 19 .
  • the frame buffer 16 receives image data which are displayed on the display device 17 .
  • the mass storage device 15 is a “solid state disk drive” that includes a plurality of flash EEPROM devices for emulating the operation of a magnetic hard disk drive.
  • the mass storage device 15 is a hard disk drive.
  • the power supply 11 includes a VCC output that provides the VCC operating voltage to the various components in the system via the bus 19 .
  • the power supply 11 may also include a VPP output that provides the VPP programming voltage to flash memory 14 and flash memory within mass storage device 15 .
  • FIG. 3 illustrates one embodiment of a block diagram of a flash memory device 200 coupled to a CPU 201 in a computer system.
  • the flash device 200 includes a main memory array 212 , which is subdivided into multiple memory blocks (i.e., block 1 through block N).
  • the main memory 212 stores 1 megabyte of data with each byte storing 8 bits of data.
  • the 1 megabyte of data may be arranged in sixteen 64 kilobyte memory blocks which are individually erasable, lockable, and unlockable in the computer system.
  • the Y decoding and gating circuit 210 and the X decoding circuit 211 may be used to select the memory locations within the main memory array 212 that are accessed by the CPU 201 .
  • main memory 212 includes flash memory cells that include electrically isolated gates referred to as floating gates.
  • the flash memory cells include a drain region and a source region in a substrate.
  • a polysilicon gate is generally disposed above and between these regions and insulated from these regions by an insulating layer.
  • a second gate referred to as the floating gate, is disposed above the floating gate and may be fabricated from a second layer of polysilicon.
  • the gate terminals of the flash memory cells are coupled to the word-lines and the drain terminals of the flash memory cells are coupled to the bit-lines.
  • the flash memory device 200 includes a block lock mini-array 214 for storing bits referred to as the block lock bits. As noted above, the setting and clearing of the block lock bits is used to prevent or protect data stored in the main memory array 212 from being modified.
  • the Y decoding and gating circuit 213 and the X decoding circuit 215 is used to select the memory locations within the block lock mini-array 214 that are accessed by the CPU 201 .
  • the protection mechanism incorporating the block lock bits uses a combination of bits, sixteen block lock bits and a master lock bit, to lock and unlock the various memory blocks.
  • the locked block lock bits gate attempts to perform block erase or programming operations, while a locked master lock bit gates attempts to modify the block lock bits.
  • Various lock bit configuration operations i.e., set block lock bit, set master lock bit, and clear block lock bits commands
  • the mini-array 214 is used to store data other than the block lock bits.
  • the address signals generated by the CPU 201 are received by the flash memory device 200 via the address bus 220 .
  • the address signals are inputted directly into the multiplexer (“mux”) 217 or inputted into the address latch 216 .
  • the address latch 216 is coupled to the mux 217 to provide address signals to the mux 217 via the internal bus 221 .
  • the command state machine (“CSM”) 203 provides a control signal to the mux 217 to select between the input coupled to the address bus 220 and the input coupled to the address latch 216 .
  • the mux 217 provides the address signals generated by the CPU 201 over the internal bus 228 to the appropriate decoding circuits (i.e., Y decoding and gating circuit 213 , X decoding circuit, Y decoding and gating circuit 210 , and X decoding circuit 211 ).
  • the appropriate decoding circuits i.e., Y decoding and gating circuit 213 , X decoding circuit, Y decoding and gating circuit 210 , and X decoding circuit 211 ).
  • the CSM 203 also referred to as the command user interface (“CUI”), serves as the interface between the CPU 201 and the internal operation of the flash memory device 200 . Commands are written into the CSM 203 using standard microprocessor write timings.
  • the CSM 203 contents serve as an input to the internal write state machine (“WSM”) 205 , which controls the various data modification operations of the flash memory device 200 .
  • WSM write state machine
  • the CSM 203 controls the block erase, byte write, and lock bit configuration operations. Functions associated with altering the data in the memory arrays (e.g., block erase, byte write, lock bit configuration, and status operations) are accessed via the CSM 203 and are executed under the control of the WSM 205 . Data stored in the memory arrays 212 and 214 or data stored in the status register 206 may be accessed by inputting the appropriate commands into the CSM 203 .
  • the CSM 203 and the WSM 205 are referred to as the control logic.
  • the flash memory device 200 automatically executes the command or commands.
  • the control logic automatically executes the algorithms and timings necessary for the various data operations.
  • the CPU 201 programs (i.e., writes) data into the flash memory device 200 via the data bus 223 .
  • Data bus 223 is coupled to the data input/output pins (e.g., DQ 0 -DQ 7 ).
  • the data to be written into the main memory array 212 or the block lock mini-array 214 is inputted into the data latch 204 via the data bus 223 when the appropriate control signals (e.g., ⁇ overscore (WE) ⁇ ) are received from the CPU 201 , and subsequently inputted into the write state machine 205 via the internal bus 220 .
  • WE ⁇ overscore
  • the WSM 205 When the CSM 203 provides the control signals to the WSM 205 via the line 270 , the WSM 205 provides the appropriate program control signals over line 290 to the voltage control circuit 209 .
  • the voltage control circuit 209 In response to the program control signals from the WSM 205 , the voltage control circuit 209 provides the appropriate voltage signals to the flash memory cells selected (i.e., addressed) for programming.
  • flash memory cells may be programmed by applying 12 volts to the gate terminal of the flash memory cell via the selected word-lines, 6 volts to 7 volts to the drain terminal of the flash memory cell via the selected bit-lines, and by applying ground to the source terminal of the flash memory cell.
  • the data operations of writing or programming data into the memory arrays are performed in byte increments and thus are referred to as byte write operations.
  • a byte write operation takes approximately 6 ⁇ s when Vcc is at 5 volts and Vpp is at 12.0 volts.
  • One embodiment of the flash memory device 200 may also operate in the byte write suspend mode. The byte write suspend mode enables the system to read data or execute code from any other memory location within the flash memory array while the byte write operation is suspended.
  • Data stored in the memory arrays may be erased by applying the appropriate voltage signals to the selected memory cells.
  • the CSM 203 receives an erase command via the data bus 223 and the CE# and WE# control signals from the CPU 201 .
  • the WSM 205 may enable the voltage control circuit 209 to provide the appropriate voltage signals to the selected memory cells.
  • a block of memory cells may be erased by applying ⁇ 11 volts to gate terminal of the flash memory cells, 6 volts to the source terminal of the flash memory cells, and by floating the drain terminal.
  • an entire block may be erased within 1 second.
  • the CPU 201 reads data stored in the memory arrays (e.g., main memory array 212 , block lock mini-array 214 ) via the data bus 223 .
  • the main memory array 212 is coupled to the sense circuit 207 via the bus 230
  • the block lock mini-array is coupled to the sense circuit 208 via the bus 229 .
  • the sense circuit 207 is used to sense the bit-line voltages of the selected and nonselected memory cells in the main memory array 212 .
  • the sense circuit 208 is used to sense the bit-line voltages of the selected and nonselected memory cells in the block lock mini-array 214 .
  • the sense circuit 207 provides data signals over the bus 227 to the output multiplexer (“mux”) 202 and the sense circuit 208 provides data signals over bus 225 to the output mux 202 .
  • These data signals represent the data read from the selected memory locations. For one embodiment, each memory location accessed for a read operation includes eight bits.
  • the output mux receives the appropriate read control signals via line 254 from the CSM 203 and receives an asserted output enable (“OE”) signal from the CPU via line 264 , the output mux 202 outputs the data signals onto the data bus 223 .
  • the CPU 201 then accesses the data from the data bus 223 .
  • the flash memory device 200 also includes a status register 206 .
  • the status register 206 includes any type of storage device that is capable of storing the status information.
  • the status register 206 includes multiple flip-flop circuits.
  • FIG. 3 shows the status register 206 residing outside of CSM 203 , for an alternative embodiment, status register 206 resides within the CSM 203 or the control logic.
  • Status register 206 indicates when the WSM 205 has completed a block erase, byte write, or block lock bit configuration operation. Furthermore, the status register 206 indicates whether these operations have been completed successfully or unsuccessfully. Status register 206 also provides other status signals, such as a byte write suspend status signal that indicates whether a byte write operation has been suspended or a protection status signal to indicate whether a byte write operation, a block erase operation, or a block lock bit configuration operation has failed due to attempts to modify a “locked” memory location.
  • a byte write suspend status signal that indicates whether a byte write operation has been suspended
  • a protection status signal to indicate whether a byte write operation, a block erase operation, or a block lock bit configuration operation has failed due to attempts to modify a “locked” memory location.
  • the CPU 201 accesses the data stored in the status register 206 by providing a read status register command over the data bus 223 .
  • the CSM 203 provides a read status register control signal over line 253 to the status register 206 .
  • the requested status data from the status register 206 is outputted onto the internal bus 226 .
  • the control signals generated by the CSM 203 and received by the output mux 202 over line 254 enables the output mux 202 to select the data from the internal bus 226 , the requested status data is then outputted from the flash memory device 200 via the data bus 223 .
  • the status register 206 stores multiple memory bits, and one or more of the memory bits is used to provide a specific status signal.
  • the status signal is outputted from the flash memory 200 via an output pin designated to provide a certain status signal or via the data input/output pins (e.g., DQ 0 -DQ 7 ).
  • the flash memory device 200 includes a READY/BUSY# (RY/BY#) pin to indicate whether the flash memory device is ready to receive a new command or is busy performing the previous command.
  • the processor polls the RY/BY# pin to determine the status of the RY/BY# pin.
  • the status of a specific status signal is read via the data input/output pins (e.g., DQ 0 -DQ 7 ) of the flash memory device 200 after inputting a read status register command via the data input/output pins.
  • FIG. 4 illustrates one embodiment of the status register 206 .
  • the status register 400 includes eight memory locations 401 through 408 . Each of the memory locations stores at least one memory bit and provides at least one status signal. Similar to the prior art status register 100 , the status register 400 stores the Vpp status (“VPPS”) information, the byte write and set lock bit status (“BWSLBS”) information, the erase and clear lock bits status (“ECLBS”) information, the erase suspend status (“ESS”) information, and the write state machine status (“WSMS”) information. More specifically, memory location 404 stores the VPPS information. Memory location 405 stores the BWSLBS information. Memory location 406 stores the ECLBS information. Memory location 407 stores the ESS information. Memory location 408 stores the WSMS information.
  • Vpp status (“VPPS”) information the byte write and set lock bit status (“BWSLBS”) information
  • ECLBS erase and clear lock bits status
  • ESS erase suspend status
  • WSMS write state machine status
  • memory location 404 stores the VPPS information.
  • the status register 400 includes additional memory locations for storing the status information related to the suspension of a programming operation and/or the protection of a memory location (or locations) addressed for a data operation.
  • the status register stores write byte suspend status (“WBSS”) information and/or the data protection status (“DPS”) information.
  • WBSS write byte suspend status
  • DPS data protection status
  • the number of total memory locations may vary for alternative embodiments.
  • the status register 400 may include one or more additional memory locations, such as the memory location 401 , which is designated as a reserved memory location.
  • a reserved memory location is a memory location that is not currently being used to store status information but may be reserved to store status information in the future.
  • One embodiment of the flash memory device 200 allows the system software to suspend a programming operation in order to read data from another flash memory array location.
  • a programming operation is suspended by entering a programming suspend command.
  • a programming operation is referred to as a byte write operation.
  • the programming operation is suspended by entering a byte write suspend command.
  • a programming suspend command causes the control logic to suspend the byte write sequence at one of the predetermined points in the algorithm.
  • the BWSS information indicates whether the programming operation is suspended or not suspended in response to the programming suspend command.
  • One embodiment of the flash memory devise 200 stores DPS information.
  • a data modification operation i.e., a program or erase operation
  • a protect status signal is outputted from the flash memory device 200 to inform the CPU (or other devices) that the attempted data modification operation addressed a protected memory location (e.g., a locked memory location) or an unprotected memory location (e.g., an unlocked memory location).
  • a protected memory location e.g., a locked memory location
  • an unprotected memory location e.g., an unlocked memory location
  • the requested data modification operation fails, the user is able to distinguish between an operation failure due to locked memory block versus an operation failure due to other failures, such as power failure or a bad block. This allows the user to be better informed as to the causes of the failure so the user can better react to the failure.
  • the user may the decide to modify data in another memory block that is unlocked or the user may decide to unlock the memory block in order to modify the data.
  • the bad block may be replaced with a redundant block or the flash memory device 200 may be designated as a failed device.
  • the status register 400 is initialized according to the steps shown in FIG. 5.
  • the flash memory device 200 is powered-up by applying the appropriate power supply signals as shown in step 501.
  • the flash memory device 200 operates with a 3.3 volt or a 5.0 volt VCC power supply.
  • the flash memory device operates with a 1.8 volt VCC power supply.
  • the RESET/DEEP POWER-DOWN (RP#) input pin is checked, as shown in step 502.
  • the RP# pin is used for placing the flash memory device 200 in the deep power-down mode and for resetting the internal automation of the flash memory device 200 .
  • a logic high voltage level on RP# enables the normal operation of the flash memory device 200 and a logic low voltage level on RP# inhibits any operations in order to provide data protection during power transitions and to save power.
  • RP# is at a logical high level, then the memory locations 402 through 408 are initialized as shown in step 503 .
  • the memory locations 402 through 407 are initialized by being set to “o” and the memory location 408 is initialized by being set to “1.”
  • the memory location 402 indicates an unlocked protection status.
  • Memory location 403 indicates a byte write operation is in progress or completed.
  • Memory location 404 indicates that the Vpp voltage is at an appropriate voltage level.
  • Memory location 405 indicates a successful byte write operation or set master/block lock bit operation.
  • Memory location 406 indicates a successful block erase operation or clear lock bits operation.
  • Memory location 407 indicates a block erase operation is in progress or is completed.
  • Memory location 408 indicates that the control logic is ready to receive a new command or command sequence.
  • FIG. 6 illustrates a flow chart for performing a programming or erase operation for one embodiment of the flash memory device 200 .
  • a programming command or an erase command is received by the flash memory device 200 .
  • the programming command or the erase command may include a sequence of commands. Typically, these commands are generated by the CPU 201 .
  • step 602. If a programming command (or sequence of commands) is received, the address of the memory location to be written to and the data to be written is received by the flash memory device 200 , as shown in step 602. If an erase command is received, the address of the memory location (i.e., memory block) to be erased is received by the flash memory device 200 , as shown in step 602. After steps 601 and 602 are completed, the control logic controls the programming and programming verify algorithms internally (not shown). Similarly, the control logic controls the erase and erase verify algorithms internally (not shown).
  • the flash memory device 200 then performs a block lock check in step 603 .
  • the block lock check includes a sequence of steps that update the status register (e.g., the memory location 402 , which stores the protection status information).
  • the block lock check is described in more detail in connection with FIG. 7.
  • the control logic determines whether the block lock bit, corresponding to the memory location to be accessed, is set. If the block lock bit is not set, then the programming or erase operation is performed in step 605 and the programming or erase operation is verified in step 607. On the other hand, if the block lock bit is set, then the flash memory device 200 determines whether or not to override the setting of the block lock bit corresponding to the memory location addressed for a write or erase operation, as shown in step 606. For one embodiment, the override command may be enabled by RP# being at 12 volts. If the override is not enabled and the block lock bit is set, then the programming or erase operation fails due to a locked memory block.
  • step 605 the programming or erase operation is performed at step 605 and then verified as having been successfully performed in step 607. If it is determined in step 607 that the programming or erase operation was not successful, then the flash memory device 200 indicates that the programming or erase operation failed for reasons other than an attempt to access a memory location residing within a locked memory block, as shown in step 609. For example, the failure may have been caused by a performing an erase or programming operation on a bad or defective memory block or a power failure. Otherwise, the flash memory device 200 indicates that the programming or erase operation was successfully completed.
  • each lock bit corresponds to a block of memory in the main array, and therefore, the lock check may be referred to as a block lock check.
  • the flash memory device 200 includes a block lock mini-array 214 for storing bits referred to as the block lock bits. The setting and the clearing of the block lock bits is used to prevent or protect data stored in the main memory array 212 from being modified.
  • each block lock bit in the mini-array 214 corresponds to a respective block of memory cells in the main memory array 212 .
  • the programming (i.e., the setting or clearing) of the bits in the block lock miniarray 214 is described below in conjunction with FIG. 8.
  • the flash memory device 200 reads the block lock bit in the mini-array 214 that corresponds to the memory block in the main array 214 that includes the memory location selected (i.e., addressed) for a programming or erase operation.
  • the memory location addressed for a programming operation is a byte of data and the memory location addressed for an erase operation is a block of data.
  • Step 701 typically occurs while the control logic is executing the command sequence for the programming operation or the erase operation.
  • the control logic within the flash memory device 200 determines at step 702 whether the block lock bit is set. For one embodiment, a cleared lock bit is at a logic “0.” A set lock bit is at a logic “1.” If the corresponding block lock bit is set, then the control logic updates the status register 206 to indicate that the corresponding block lock bit is protected or locked. For one embodiment, memory location 402 is updated to indicate that the memory block selected for a data modification operation is locked.
  • the control logic updates the status register 206 to indicate that the corresponding block lock bit is not locked.
  • the memory location 402 is updated to indicate that the memory block selected for a data modification operation is unlocked.
  • FIG. 7 illustrates in step 702 that if the corresponding block lock bit is not set, then the block lock check is completed.
  • the DPS information in the status register 206 has already been initialized to indicate that the block lock bits are not set. Thus, when it is determined that the lock bit corresponding to the addressed memory location is not set, the DPS information does not need to be modified.
  • FIGS. 8 through 12 provide a detailed description of the programming operation for one embodiment of the flash memory device 200 .
  • one embodiment may distinguish between a programming or write operation failure due to a device protect error and a program operation failure (such as a power failure or a bad block).
  • a program operation failure such as a power failure or a bad block.
  • one embodiment allows the flash memory device 200 to suspend a programming operation.
  • the main memory array 212 is programmed by performing a programming operation such as a byte write operation.
  • the control logic receives a programming command, such as a byte write command, to initiate the programming operation.
  • a programming command such as a byte write command
  • the status register 206 is updated to indicate that the control logic is busy performing a data modification operation in step 903.
  • the memory location 408 in the status register 400 is updated to store a logic “0.”
  • the block lock check in step 904 is performed in accordance with the steps described in FIG. 7.
  • the block lock check ensures that the status register 206 includes the updated protection status information corresponding to the memory location selected for the programming operation.
  • step 905 the control logic starts performing the programming operation specified by the programming command.
  • the control logic determines if the programming operation is completed in step 1001. If the programming operation is completed, then the status register 206 is updated to indicate that the control logic has completed its previous data modification operation and is ready to receive a new data modification operation in step 1002. After updating the status register 206 , a determination is made in step 1003 whether to perform a full status check. The full status check checks the various status signals to determine whether a specified failure has occurred. FIG. 12 describes the status check in more detail. If a full status check is desired, then the control logic proceeds to step 1301 . Otherwise, the programming operation is completed.
  • step 1001 determines whether a programming suspend command has been entered in step 1004. If a programming suspend command has been entered, then the control logic proceeds to step 1101 in FIG. 10.
  • the control logic may or may not proceed to suspend the programming operation.
  • the programming suspend command requests that the control logic suspend the programming operation sequence at one of the predetermined points in the algorithm.
  • a programming suspend command has been received by the control logic, if the program operation has already or is currently executing those commands, the programming operation may not be suspended.
  • step 1002 to update the status register 206 to indicate that the programming operation is suspended.
  • the memory location 403 is updated to store a logic “1” to indicate the programming operation (e.g., byte-write operation) is suspended.
  • the status register 206 is updated to indicate that the control logic is ready to perform a new data modification operation, as shown in step 1103.
  • the memory location 408 in the status register 206 stores the WSMS information.
  • the control logic receives a read status register command as shown in step 1104.
  • the flash memory device 200 In response to the read status register command, the flash memory device 200 automatically outputs the WSMS signal and the BWSS signal. After the WSMS signal is outputted from the flash memory array 200 , the flash memory array 200 receives a read command for a memory location other than that specified by the write operation that was suspended. In other words, a read operation may not be performed on the same memory location that was specified in the programming operation that is currently being suspended.
  • step 1106 a read operation is performed on the selected memory location in the main memory as shown in step 1106.
  • the control logic determines when the read operation is completed in step 1106. Once the control logic has completed the read operation, the control logic proceeds to perform step 1201 as shown in FIG. 11.
  • the flash memory device 200 receives a programming resume command at step 1201.
  • the control logic updates the status register 206 to indicate that the control logic is busy completing the programming or write operation. Additionally, the status register 206 is updated at step 1203 to indicate that the programming operation is no longer suspended. For one embodiment, the memory location 408 and the memory location 403 in the status register 400 are each updated to store a logic “0.” After steps 1202 and 1203 are completed, step 1001 is repeated.
  • the flash memory device 200 determines that a full status check is to be performed, the flash memory device 200 proceeds to step 1301 in FIG. 12.
  • the control logic receives a read status register command.
  • the memory location 404 (which stores the VPPS information), the memory location 402 (which stores the DPS information), and the memory location 405 (which stores the BWSLBS information) may be read from the status register 206 .
  • the flash memory device 200 checks whether the programming voltage Vpp applied to the flash memory device 200 is within the appropriate voltage level range. If Vpp is not within an appropriate voltage level (e.g., if Vpp is not greater or equal to 3 volts), then the VPPS signal indicates a Vpp range error in step 1305. On the other hand, if Vpp is within the appropriate range, then another status check is made.
  • the flash memory device 200 also checks whether the programming operation is requested to be performed on a memory location within a locked memory block in step 1303. If the selected memory location resides within a memory block that is device protected or locked, then a device protect error results, as shown in step 1306. On the other hand, if the selected memory location resides within an unprotected or unlocked memory block, then another status check is made.
  • the flash memory device 200 checks whether the programming operation was performed successfully. If the programming operation was not successfully completed, then the flash memory device 200 at step 1307 detects a program operation error in step 1307 and the code terminates. On the other hand, if the programming operation was successfully completed, then the full status check is completed. For an alternative embodiment, another status check may be made, however.
  • FIGS. 13 through 17 describe an erase operation for one embodiment. Unlike the prior art flash memory devices, one embodiment distinguishes between an erase operation failure due to a device protect error and a failure due to an erase operation failure (e.g., a bad memory location).
  • the status register 206 is updated at step 1403 to indicate that the control logic is busy performing an erase operation.
  • the memory location 408 in the status register 206 is updated to store a logic “0.”
  • control logic performs a block lock check as shown in step 1404.
  • the block lock check is performed in accordance with the steps provided in FIG. 7. After the block lock check is completed, the control logic proceeds to start the erase operation.
  • step 1501 in FIG. 14 determines whether the erase operation is completed. If the erase operation is completed, then at step 1502 the status register 206 is updated to indicate that the control logic is ready to perform a new data modification operation. For one embodiment, memory location 408 is updated to store a logic “1.” The flash memory device 200 then determines at step 1503 whether to perform a full status check. If a full status check is not performed, the erase operation is completed. Otherwise, the control logic proceeds to perform the full status check. For one embodiment, the full status check is performed according to the steps described in FIG. 17.
  • step 1501 determines whether the control logic has received an erase suspend command. If an erase suspend command has not been entered, then step 1501 is repeated. Otherwise, the control logic proceeds to step 1601 in FIG. 15.
  • An erase operation is suspended at designated points in the erase operation algorithm. Once an erase suspend command has been received by the flash memory device 200 , the control logic may or may not suspend the erase operation, depending on what stage the control logic is at in performing the erase operation. If the erase operation is not suspended, then step 1501 is repeated. Otherwise, the control logic updates the status register 206 to indicate that the erase operation is suspended, as shown in step 1602, and the control logic is ready to perform a new data modification operation, as shown in step 1603. For one embodiment, the memory location 407 in the status register 400 is updated to store a logic “1” and the memory location 408 in the status register is updated to store a logic “1.” At step 1604, the control logic receives a read status register command. Once the status register 206 indicates that the control logic is ready to perform a new data modification operation, the control logic receives a read or programming command, as shown in step 1603. Subsequently, the read operation or programming operation is performed in step 1606.
  • step 1701 is performed as, shown in FIG. 16.
  • the control logic receives an erase resume command.
  • the status register 206 is updated to indicate that the control logic is busy performing the erase operation because the erase operation is no longer suspended.
  • the memory location 408 is updated to store a logic “0” and the memory location 407 is updated to store a logic “0.” Step 1501 is then repeated.
  • step 1503 The steps in FIG. 17 are performed if it is determined in step 1503 that the a full status check is to be performed.
  • the full status check in step 1503 is used to determine the various failure modes.
  • the control logic receives the read status register command in step 1801.
  • memory location 404 which stores the VPPS information
  • memory location 402 which stores the DPS information
  • memory location 406 which stores the ECLBS information
  • memory location 405 which stores the BWSLBS information
  • a programming voltage Vpp range error is detected in step 1806 when the status register 206 indicates that the Vpp level is not in the appropriate range in step 1802.
  • a device protect error 1807 is detected in step 1807 when the status register indicates that the attempted erase operation requested a protected or locked memory block to be modified, as shown in step 1803.
  • a command sequence error is detected in step 1808 if at step 1804 both the memory locations 405 and 406 are found to be set to a logic “1.”
  • An erase operation error is detected in step 1809 when the status register indicates that the erase operation was not successfully completed. For one embodiment, the full status check is completed after performing the four status checks described above.

Abstract

A status register for a memory device. The status register provides a programming suspend status signal and a protection status signal. The programming suspend status signal indicates whether a programming operation is suspended. If the processor knows that a programming operation to a specific memory location is suspended, then the processor may request that a data modification operation to another memory location be performed while the programming operation is suspended. The protection status signal indicates whether an attempted data modification operation failed due to a protected memory block versus another type of device failure. Protecting or locking a memory block prevents the modification of data stored in a particular memory block.

Description

    FIELD OF THE INVENTION
  • The present invention relates to the field of semiconductor memories. More particularly, the present invention relates to providing a programming suspend status signal and a protection status signal for a nonvolatile memory. [0001]
  • BACKGROUND OF THE INVENTION
  • Status registers are often used to store status information relating to the internal operations of a semiconductor integrated circuit (“IC”). Memory ICs or devices, such as flash electrically erasable programmable read only memory (“EEPROM”) devices, may store information in a status register to indicate whether an operation (e.g., an erase operation, a programming operation, a read operation, etc.) is in progress or is completed. The status register may also indicate whether a specific operation has been completed successfully or unsuccessfully. Such information often provides necessary or desirable information to other components in a system. [0002]
  • For example, the processor or CPU in a system may need to know when an erase operation performed on a memory device (such as a flash memory device) is completed before requesting the memory device to perform a programming operation. Additionally, the processor in a system may want to know whether an erase operation to a specific memory location has been suspended. Typically, an erase operation takes a much longer time to complete as compared to a programming or read operation. For example, an erase operation may take a few milliseconds (“ms”), whereas a programming operation may take 7-8 microseconds (“μs”) and a reading operation may take 85 nanoseconds (“ns”). Thus, when an erase operation to a specific memory location is suspended, the processor may program or read data from a different memory location rather than waiting for the completion of the current erase operation. The ability to suspend an erase operation may improve the overall performance of a flash memory device. [0003]
  • Typically, a status register stores multiple memory bits in which one or more of the memory bits may be used to provide a specific status signal. The status signal may be sent as an output from the memory device via a designated output pin when polled or via the data input/output (“I/O”) pins of a memory device in response to a read status register command. [0004]
  • FIG. 1 illustrates one embodiment of a status register for a prior art flash memory device that is capable of performing programming, erase, and read operations. The status register [0005] 100 includes the five memory locations 101 through 105 with each memory location storing at least one memory bit. For the embodiment shown in FIG. 5, the status register 100 provides five status signals. The memory location 101 stores Vpp status (“VPPS”) information; the memory location 102 stores byte write and set lock bit status (“BWSLBS”) information; the memory location 103 stores erase and clear lock bits status (“ECLBS”) information; the memory location 104 stores erase suspend status (“ESS”) information; and the memory location 105 stores write state machine status (“WSMS”) information.
  • The VPPS information indicates whether Vpp, the programming voltage, is at an acceptable voltage level or not at an acceptable voltage level. If Vpp is not at an acceptable voltage level, then the current operation may be aborted. The BWSLBS information indicates an unsuccessful byte write operation or a successful byte write operation. Alternatively, the BWSLBS information indicates an unsuccessful set master/block lock bit operation or a successful set master/block lock bit operation. The ECLBS information indicates an unsuccessful block erasure operation or a successful block erasure operation. Alternatively, the ECLBS information indicates an unsuccessful clear lock bits operation or a successful clear lock bits operation. The ESS information indicates that the block erase operation is suspended or that the block erase operation is in progress/completed. The WSMS information indicates that the write state machine is ready or is busy. [0006]
  • The VPPS signal, the BWSLBS signal, the ECLBS signal, the ESS signal, and the WSMS signal are provided are outputted in response to a read status register command. Furthermore, the WSMS signal is outputted by polling a dedicated status output pin (e.g., pin). [0007]
  • The prior art memory device described above did not, however, provide the feature of suspending a programming operation. Therefore, a programming operation specifying a particular memory location could not be suspended in order to perform another operation, such as a read operation to another memory location, while the programming operation is suspended. In certain situations, it may be more efficient to perform a read operation (which requires less time than a write operation) while a programming operation is suspended, rather than waiting until the programming operation is completed. [0008]
  • Additionally, the prior art memory device described above did not provide the feature of indicating whether an unsuccessful program or erase operation was due to an attempt to access data in a protected memory block. A prior art protection mechanism was implemented by the setting and clearing of memory bits (i.e., lock bits) that correspond to the various memory blocks in the memory device. The lock bits are stored in a miniature array referred to as the block lock mini-array. The lock bits within the block lock mini-array are set to indicate that the corresponding memory block is locked, and cleared (or not set) to indicate that the corresponding memory block is unlocked. A read, program, or erase operation may be performed on any unlocked memory block. A program base operation may not, however, be performed on any locked memory block unless an override lock operation is first performed on the locked memory block. [0009]
  • SUMMARY OF THE INVENTION
  • A memory device is described that has a control circuit coupled to a memory array and a register. The register is configured to store at least one bit indicating the suspend status of a write operation. The control circuit is configured to update the register and to control the output of a status signal representing the suspend status of the write operation. [0010]
  • A memory device is described that has a control circuit coupled to a memory array and a register. The register is configured to store at least one bit indicating the protection status of a data modification operation. The control circuit is configured to update the register and to control the output of a status signal representing the protection status of the data modification operation. [0011]
  • A method is also described for providing the suspend status of a programming operation in a memory device. A programming operation to a memory location is performed. Prior to the completion of the programming operation, a suspend status signal is received. It is determined whether or not to suspend the programming operation. If the programming operation is suspended, a status register is updated, if necessary, to indicate the programming operation is suspended. An output signal is provided to indicate the suspend status of the programming operation. [0012]
  • A method is also described for providing the protection status of a data modification operation in a memory device. A data modification operation is issued with respect to a memory location. The protection status of the memory location is determined. An output signal is provided to indicate the protection status of the memory location. [0013]
  • Other features and advantages of the present invention will be apparent from the accompanying drawings and from the detailed description that follows below. [0014]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which: [0015]
  • FIG. 1 illustrates a prior art status register. [0016]
  • FIG. 2 illustrates a computer system that includes one embodiment of the memory device. [0017]
  • FIG. 3 illustrates a CPU coupled to one embodiment of the memory device. [0018]
  • FIG. 4 illustrates one embodiment of the status register. [0019]
  • FIG. 5 illustrates a flow chart for initializing one embodiment of the status register. [0020]
  • FIG. 6 illustrates a flow chart for performing a programming or erase operation for one embodiment of the memory device. [0021]
  • FIG. 7 illustrates a flow chart for performing a block lock check for one embodiment of the memory device. [0022]
  • FIGS. 8 through 12 illustrate a flow chart for a programming operation. [0023]
  • FIGS. 13 through 17 illustrate a flow chart for an erase operation. [0024]
  • DETAILED DESCRIPTION
  • One embodiment of the memory device optimizes the memory to processor interface by providing a programming suspend status signal. The programming suspend status signal is used to indicate the current execution status (i.e., whether a programming operation is suspended or is not suspended) of a programming operation. For one embodiment, the programming operation is a byte write operation. Once the processor is informed that the execution of the current programming operation is suspended, the processor may request that a different read, program or erase operation may be performed while the programming operation is suspended. [0025]
  • For example, once the processor is informed that the programming operation to a specific memory location is suspended, then the processor may request that a read operation be performed on another memory location. As such, the processor may not be required to wait until the entire programming operation to a first memory location is completed (which may be an unacceptable time) before reading from a second memory location. In certain situations, this feature may improve the efficiency of the computer system. [0026]
  • One embodiment of the memory device optimizes the memory to processor interface by providing a protection status signal. This signal is used to indicate whether the memory location accessed by a program or erase operation resides in a protected memory block or an unprotected memory block. [0027]
  • For one embodiment, a protected memory block is referred to as a locked memory block and an unprotected memory block is referred to as an unlocked memory block. The data stored in an unlocked memory block may be modified by a program or erase operation; however, the data stored in a locked memory block may not be modified unless the memory block is first unlocked by an override operation. This feature of providing a protection status signal typically allows the processor to differentiate between a program or erase operation that failed due to an attempt to access a memory location in a memory block that was protected (e.g., block locked) versus a program or erase operation that failed due to a power failure or a bad block. One intent is to improve the efficiency of the computer system. [0028]
  • The purpose of the protection status signal is to provide the user with meaningful information about an operation. If the user finds out that the operation (for example, a byte write operation) failed because of block protection, the user can unlock the block and reissue the command. But if the operation failed because of a bad block, then the user will not try to write again to the same location. That is why the differentiation between the two types of failures is advantageous. An analogy would be being unable to open a car door because the door is locked versus because the door is jammed. In the former case, one uses a key to open the door. In the latter case, one calls a mechanic to fix the door. [0029]
  • One embodiment of the memory device may be used in various types of computer systems or data processing systems. The computer system within which the memory device, such as a flash memory device, is used can be a personal computer, a notebook computer, a laptop computer, a personal assistant/communicator, a minicomputer, a workstation, a mainframe, a multiprocessor computer, or any other type of computer system. In addition, the system in which the memory device is used can be a printer system, a cellular phone system, a digital answering system, a digital camera, or any other system that requires data storage. [0030]
  • FIG. 2 illustrates one embodiment of a general [0031] purpose computer system 10. The computer system 10 may include a power supply 11, a central processing unit (“CPU”) 12, a main memory 13, a flash memory 14, a mass storage device 15, a frame buffer 16, and an input device 18, all of which are coupled to a bus 19. Data may be transferred among the various components in the system 10 via the bus 19. The frame buffer 16 receives image data which are displayed on the display device 17.
  • For one embodiment, the [0032] mass storage device 15 is a “solid state disk drive” that includes a plurality of flash EEPROM devices for emulating the operation of a magnetic hard disk drive. For another embodiment, the mass storage device 15 is a hard disk drive.
  • The [0033] power supply 11 includes a VCC output that provides the VCC operating voltage to the various components in the system via the bus 19. The power supply 11 may also include a VPP output that provides the VPP programming voltage to flash memory 14 and flash memory within mass storage device 15.
  • FIG. 3 illustrates one embodiment of a block diagram of a [0034] flash memory device 200 coupled to a CPU 201 in a computer system. The flash device 200 includes a main memory array 212, which is subdivided into multiple memory blocks (i.e., block 1 through block N). For one embodiment, the main memory 212 stores 1 megabyte of data with each byte storing 8 bits of data. The 1 megabyte of data may be arranged in sixteen 64 kilobyte memory blocks which are individually erasable, lockable, and unlockable in the computer system. The Y decoding and gating circuit 210 and the X decoding circuit 211 may be used to select the memory locations within the main memory array 212 that are accessed by the CPU 201.
  • For one embodiment, [0035] main memory 212 includes flash memory cells that include electrically isolated gates referred to as floating gates. The flash memory cells include a drain region and a source region in a substrate. A polysilicon gate is generally disposed above and between these regions and insulated from these regions by an insulating layer. A second gate, referred to as the floating gate, is disposed above the floating gate and may be fabricated from a second layer of polysilicon. The gate terminals of the flash memory cells are coupled to the word-lines and the drain terminals of the flash memory cells are coupled to the bit-lines.
  • The [0036] flash memory device 200 includes a block lock mini-array 214 for storing bits referred to as the block lock bits. As noted above, the setting and clearing of the block lock bits is used to prevent or protect data stored in the main memory array 212 from being modified. The Y decoding and gating circuit 213 and the X decoding circuit 215 is used to select the memory locations within the block lock mini-array 214 that are accessed by the CPU 201.
  • For one embodiment, the protection mechanism incorporating the block lock bits uses a combination of bits, sixteen block lock bits and a master lock bit, to lock and unlock the various memory blocks. The locked block lock bits gate attempts to perform block erase or programming operations, while a locked master lock bit gates attempts to modify the block lock bits. Various lock bit configuration operations (i.e., set block lock bit, set master lock bit, and clear block lock bits commands) are used to configure the bits in the block lock mini-array. For an alternative embodiment, the mini-array [0037] 214 is used to store data other than the block lock bits.
  • When the [0038] CPU 201 accesses a memory location for an operation (e.g., read operation, write operation, erase operation, etc.), the address signals generated by the CPU 201 are received by the flash memory device 200 via the address bus 220. The address signals are inputted directly into the multiplexer (“mux”) 217 or inputted into the address latch 216. The address latch 216 is coupled to the mux 217 to provide address signals to the mux 217 via the internal bus 221. The command state machine (“CSM”) 203 provides a control signal to the mux 217 to select between the input coupled to the address bus 220 and the input coupled to the address latch 216. The mux 217 provides the address signals generated by the CPU 201 over the internal bus 228 to the appropriate decoding circuits (i.e., Y decoding and gating circuit 213, X decoding circuit, Y decoding and gating circuit 210, and X decoding circuit 211).
  • The [0039] CSM 203, also referred to as the command user interface (“CUI”), serves as the interface between the CPU 201 and the internal operation of the flash memory device 200. Commands are written into the CSM 203 using standard microprocessor write timings. The CSM 203 contents serve as an input to the internal write state machine (“WSM”) 205, which controls the various data modification operations of the flash memory device 200. For one embodiment, the CSM 203 controls the block erase, byte write, and lock bit configuration operations. Functions associated with altering the data in the memory arrays (e.g., block erase, byte write, lock bit configuration, and status operations) are accessed via the CSM 203 and are executed under the control of the WSM 205. Data stored in the memory arrays 212 and 214 or data stored in the status register 206 may be accessed by inputting the appropriate commands into the CSM 203. The CSM 203 and the WSM 205 are referred to as the control logic.
  • Once a valid command or command sequence has been generated by the [0040] CPU 201 and written into the CSM 203, the flash memory device 200 automatically executes the command or commands. In other words, the control logic automatically executes the algorithms and timings necessary for the various data operations.
  • The [0041] CPU 201 programs (i.e., writes) data into the flash memory device 200 via the data bus 223. Data bus 223 is coupled to the data input/output pins (e.g., DQ0-DQ7). The data to be written into the main memory array 212 or the block lock mini-array 214 is inputted into the data latch 204 via the data bus 223 when the appropriate control signals (e.g., {overscore (WE)}) are received from the CPU 201, and subsequently inputted into the write state machine 205 via the internal bus 220. When the CSM 203 provides the control signals to the WSM 205 via the line 270, the WSM 205 provides the appropriate program control signals over line 290 to the voltage control circuit 209. In response to the program control signals from the WSM 205, the voltage control circuit 209 provides the appropriate voltage signals to the flash memory cells selected (i.e., addressed) for programming. For one embodiment, flash memory cells may be programmed by applying 12 volts to the gate terminal of the flash memory cell via the selected word-lines, 6 volts to 7 volts to the drain terminal of the flash memory cell via the selected bit-lines, and by applying ground to the source terminal of the flash memory cell.
  • For one embodiment, the data operations of writing or programming data into the memory arrays are performed in byte increments and thus are referred to as byte write operations. For one embodiment, a byte write operation takes approximately 6 μs when Vcc is at 5 volts and Vpp is at 12.0 volts. One embodiment of the [0042] flash memory device 200 may also operate in the byte write suspend mode. The byte write suspend mode enables the system to read data or execute code from any other memory location within the flash memory array while the byte write operation is suspended.
  • Data stored in the memory arrays (e.g., [0043] main memory array 212, block lock mini-array 214) may be erased by applying the appropriate voltage signals to the selected memory cells. During an erase operation, the CSM 203 receives an erase command via the data bus 223 and the CE# and WE# control signals from the CPU 201. Once the CSM 203 provides erase control signals to the WSM 205, the WSM 205 may enable the voltage control circuit 209 to provide the appropriate voltage signals to the selected memory cells. For one embodiment, a block of memory cells may be erased by applying −11 volts to gate terminal of the flash memory cells, 6 volts to the source terminal of the flash memory cells, and by floating the drain terminal. For one embodiment, an entire block may be erased within 1 second.
  • The [0044] CPU 201 reads data stored in the memory arrays (e.g., main memory array 212, block lock mini-array 214) via the data bus 223. The main memory array 212 is coupled to the sense circuit 207 via the bus 230, and the block lock mini-array is coupled to the sense circuit 208 via the bus 229. The sense circuit 207 is used to sense the bit-line voltages of the selected and nonselected memory cells in the main memory array 212. Similarly, the sense circuit 208 is used to sense the bit-line voltages of the selected and nonselected memory cells in the block lock mini-array 214. The sense circuit 207 provides data signals over the bus 227 to the output multiplexer (“mux”) 202 and the sense circuit 208 provides data signals over bus 225 to the output mux 202. These data signals represent the data read from the selected memory locations. For one embodiment, each memory location accessed for a read operation includes eight bits. When the output mux receives the appropriate read control signals via line 254 from the CSM 203 and receives an asserted output enable (“OE”) signal from the CPU via line 264, the output mux 202 outputs the data signals onto the data bus 223. The CPU 201 then accesses the data from the data bus 223.
  • The [0045] flash memory device 200 also includes a status register 206. The status register 206 includes any type of storage device that is capable of storing the status information. For one embodiment, the status register 206 includes multiple flip-flop circuits. Although FIG. 3 shows the status register 206 residing outside of CSM 203, for an alternative embodiment, status register 206 resides within the CSM 203 or the control logic.
  • [0046] Status register 206 indicates when the WSM 205 has completed a block erase, byte write, or block lock bit configuration operation. Furthermore, the status register 206 indicates whether these operations have been completed successfully or unsuccessfully. Status register 206 also provides other status signals, such as a byte write suspend status signal that indicates whether a byte write operation has been suspended or a protection status signal to indicate whether a byte write operation, a block erase operation, or a block lock bit configuration operation has failed due to attempts to modify a “locked” memory location.
  • The [0047] CPU 201 accesses the data stored in the status register 206 by providing a read status register command over the data bus 223. In response to a read status register command, the CSM 203 provides a read status register control signal over line 253 to the status register 206. The requested status data from the status register 206 is outputted onto the internal bus 226. When the control signals generated by the CSM 203 and received by the output mux 202 over line 254 enables the output mux 202 to select the data from the internal bus 226, the requested status data is then outputted from the flash memory device 200 via the data bus 223.
  • The status register [0048] 206 stores multiple memory bits, and one or more of the memory bits is used to provide a specific status signal. The status signal is outputted from the flash memory 200 via an output pin designated to provide a certain status signal or via the data input/output pins (e.g., DQ0-DQ7). For one embodiment, the flash memory device 200 includes a READY/BUSY# (RY/BY#) pin to indicate whether the flash memory device is ready to receive a new command or is busy performing the previous command. The processor polls the RY/BY# pin to determine the status of the RY/BY# pin. For an alternative embodiment, the status of a specific status signal is read via the data input/output pins (e.g., DQ0-DQ7) of the flash memory device 200 after inputting a read status register command via the data input/output pins.
  • FIG. 4 illustrates one embodiment of the [0049] status register 206. The status register 400 includes eight memory locations 401 through 408. Each of the memory locations stores at least one memory bit and provides at least one status signal. Similar to the prior art status register 100, the status register 400 stores the Vpp status (“VPPS”) information, the byte write and set lock bit status (“BWSLBS”) information, the erase and clear lock bits status (“ECLBS”) information, the erase suspend status (“ESS”) information, and the write state machine status (“WSMS”) information. More specifically, memory location 404 stores the VPPS information. Memory location 405 stores the BWSLBS information. Memory location 406 stores the ECLBS information. Memory location 407 stores the ESS information. Memory location 408 stores the WSMS information.
  • In addition to storing the status information for the VPP, BWSLBS, ECLB, ES, and WSM, the status register [0050] 400 includes additional memory locations for storing the status information related to the suspension of a programming operation and/or the protection of a memory location (or locations) addressed for a data operation. For one embodiment, the status register stores write byte suspend status (“WBSS”) information and/or the data protection status (“DPS”) information. The number of total memory locations may vary for alternative embodiments. Furthermore, the status register 400 may include one or more additional memory locations, such as the memory location 401, which is designated as a reserved memory location. A reserved memory location is a memory location that is not currently being used to store status information but may be reserved to store status information in the future.
  • One embodiment of the [0051] flash memory device 200 allows the system software to suspend a programming operation in order to read data from another flash memory array location. A programming operation is suspended by entering a programming suspend command. For one embodiment, a programming operation is referred to as a byte write operation. The programming operation is suspended by entering a byte write suspend command. Once the programming process starts, a programming suspend command causes the control logic to suspend the byte write sequence at one of the predetermined points in the algorithm. The BWSS information indicates whether the programming operation is suspended or not suspended in response to the programming suspend command.
  • One embodiment of the flash memory devise [0052] 200 stores DPS information. When a data modification operation (i.e., a program or erase operation) is requested, a protect status signal is outputted from the flash memory device 200 to inform the CPU (or other devices) that the attempted data modification operation addressed a protected memory location (e.g., a locked memory location) or an unprotected memory location (e.g., an unlocked memory location). For one embodiment, when the requested data modification operation fails, the user is able to distinguish between an operation failure due to locked memory block versus an operation failure due to other failures, such as power failure or a bad block. This allows the user to be better informed as to the causes of the failure so the user can better react to the failure.
  • For example, if the requested data modification operation failed due to an attempt to modify data in a locked memory block, the user may the decide to modify data in another memory block that is unlocked or the user may decide to unlock the memory block in order to modify the data. On the other hand, if the requested data modification operation failed due to a bad block, the bad block may be replaced with a redundant block or the [0053] flash memory device 200 may be designated as a failed device.
  • The following figures illustrate the steps involved in providing the various status signals. For one embodiment, the status register [0054] 400 is initialized according to the steps shown in FIG. 5. The flash memory device 200 is powered-up by applying the appropriate power supply signals as shown in step 501. For one embodiment, the flash memory device 200 operates with a 3.3 volt or a 5.0 volt VCC power supply. For an alternative embodiment, the flash memory device operates with a 1.8 volt VCC power supply.
  • Once the [0055] flash memory device 200 is powered-up, the RESET/DEEP POWER-DOWN (RP#) input pin is checked, as shown in step 502. For one embodiment, the RP# pin is used for placing the flash memory device 200 in the deep power-down mode and for resetting the internal automation of the flash memory device 200. A logic high voltage level on RP# enables the normal operation of the flash memory device 200 and a logic low voltage level on RP# inhibits any operations in order to provide data protection during power transitions and to save power. If RP# is at a logical high level, then the memory locations 402 through 408 are initialized as shown in step 503. For one embodiment, the memory locations 402 through 407 are initialized by being set to “o” and the memory location 408 is initialized by being set to “1.”
  • When the status register [0056] 400 is initialized, the memory location 402 indicates an unlocked protection status. Memory location 403 indicates a byte write operation is in progress or completed. Memory location 404 indicates that the Vpp voltage is at an appropriate voltage level. Memory location 405 indicates a successful byte write operation or set master/block lock bit operation. Memory location 406 indicates a successful block erase operation or clear lock bits operation. Memory location 407 indicates a block erase operation is in progress or is completed. Memory location 408 indicates that the control logic is ready to receive a new command or command sequence.
  • FIG. 6 illustrates a flow chart for performing a programming or erase operation for one embodiment of the [0057] flash memory device 200. According to step 601, a programming command or an erase command is received by the flash memory device 200. The programming command or the erase command may include a sequence of commands. Typically, these commands are generated by the CPU 201.
  • If a programming command (or sequence of commands) is received, the address of the memory location to be written to and the data to be written is received by the [0058] flash memory device 200, as shown in step 602. If an erase command is received, the address of the memory location (i.e., memory block) to be erased is received by the flash memory device 200, as shown in step 602. After steps 601 and 602 are completed, the control logic controls the programming and programming verify algorithms internally (not shown). Similarly, the control logic controls the erase and erase verify algorithms internally (not shown).
  • The [0059] flash memory device 200 then performs a block lock check in step 603. The block lock check includes a sequence of steps that update the status register (e.g., the memory location 402, which stores the protection status information). The block lock check is described in more detail in connection with FIG. 7.
  • Next, the control logic determines whether the block lock bit, corresponding to the memory location to be accessed, is set. If the block lock bit is not set, then the programming or erase operation is performed in [0060] step 605 and the programming or erase operation is verified in step 607. On the other hand, if the block lock bit is set, then the flash memory device 200 determines whether or not to override the setting of the block lock bit corresponding to the memory location addressed for a write or erase operation, as shown in step 606. For one embodiment, the override command may be enabled by RP# being at 12 volts. If the override is not enabled and the block lock bit is set, then the programming or erase operation fails due to a locked memory block.
  • On the other hand, if the override is enabled and the set block lock bit is cleared, then the programming or erase operation is performed at [0061] step 605 and then verified as having been successfully performed in step 607. If it is determined in step 607 that the programming or erase operation was not successful, then the flash memory device 200 indicates that the programming or erase operation failed for reasons other than an attempt to access a memory location residing within a locked memory block, as shown in step 609. For example, the failure may have been caused by a performing an erase or programming operation on a bad or defective memory block or a power failure. Otherwise, the flash memory device 200 indicates that the programming or erase operation was successfully completed.
  • The block [0062] lock check step 603 is described in more detail in FIG. 7. For one embodiment, each lock bit corresponds to a block of memory in the main array, and therefore, the lock check may be referred to as a block lock check. As previously mentioned, the flash memory device 200 includes a block lock mini-array 214 for storing bits referred to as the block lock bits. The setting and the clearing of the block lock bits is used to prevent or protect data stored in the main memory array 212 from being modified. For one embodiment, each block lock bit in the mini-array 214 corresponds to a respective block of memory cells in the main memory array 212. The programming (i.e., the setting or clearing) of the bits in the block lock miniarray 214 is described below in conjunction with FIG. 8.
  • According to step 701, the [0063] flash memory device 200 reads the block lock bit in the mini-array 214 that corresponds to the memory block in the main array 214 that includes the memory location selected (i.e., addressed) for a programming or erase operation. For one embodiment, the memory location addressed for a programming operation is a byte of data and the memory location addressed for an erase operation is a block of data. Step 701 typically occurs while the control logic is executing the command sequence for the programming operation or the erase operation.
  • While performing the block lock check, the control logic within the [0064] flash memory device 200 determines at step 702 whether the block lock bit is set. For one embodiment, a cleared lock bit is at a logic “0.” A set lock bit is at a logic “1.” If the corresponding block lock bit is set, then the control logic updates the status register 206 to indicate that the corresponding block lock bit is protected or locked. For one embodiment, memory location 402 is updated to indicate that the memory block selected for a data modification operation is locked.
  • On the other hand, if the corresponding block lock bit is not set, then the control logic updates the [0065] status register 206 to indicate that the corresponding block lock bit is not locked. For one embodiment, the memory location 402 is updated to indicate that the memory block selected for a data modification operation is unlocked.
  • FIG. 7 illustrates in [0066] step 702 that if the corresponding block lock bit is not set, then the block lock check is completed. For one embodiment, the DPS information in the status register 206 has already been initialized to indicate that the block lock bits are not set. Thus, when it is determined that the lock bit corresponding to the addressed memory location is not set, the DPS information does not need to be modified.
  • FIGS. 8 through 12 provide a detailed description of the programming operation for one embodiment of the [0067] flash memory device 200. Unlike the prior art flash memory devices, one embodiment may distinguish between a programming or write operation failure due to a device protect error and a program operation failure (such as a power failure or a bad block). Furthermore, unlike the prior art flash memory devices, one embodiment, allows the flash memory device 200 to suspend a programming operation.
  • For one embodiment, the [0068] main memory array 212 is programmed by performing a programming operation such as a byte write operation. In step 901, the control logic receives a programming command, such as a byte write command, to initiate the programming operation. Once the data to be written and the address to be written into the flash memory device 200 is received by the control logic in step 902, the status register 206 is updated to indicate that the control logic is busy performing a data modification operation in step 903. For one embodiment, the memory location 408 in the status register 400 is updated to store a logic “0.”
  • Once the [0069] status register 206 has been updated at step 903, the control logic performs a block lock check at step 904. The block lock check in step 904 is performed in accordance with the steps described in FIG. 7. The block lock check ensures that the status register 206 includes the updated protection status information corresponding to the memory location selected for the programming operation. Next, in step 905, the control logic starts performing the programming operation specified by the programming command.
  • The control logic then determines if the programming operation is completed in [0070] step 1001. If the programming operation is completed, then the status register 206 is updated to indicate that the control logic has completed its previous data modification operation and is ready to receive a new data modification operation in step 1002. After updating the status register 206, a determination is made in step 1003 whether to perform a full status check. The full status check checks the various status signals to determine whether a specified failure has occurred. FIG. 12 describes the status check in more detail. If a full status check is desired, then the control logic proceeds to step 1301. Otherwise, the programming operation is completed.
  • On the other hand, if the programming operation is not completed in [0071] step 1001, then the control logic determines whether a programming suspend command has been entered in step 1004. If a programming suspend command has been entered, then the control logic proceeds to step 1101 in FIG. 10.
  • Once a programming suspend command has been entered, the control logic may or may not proceed to suspend the programming operation. The programming suspend command requests that the control logic suspend the programming operation sequence at one of the predetermined points in the algorithm. Although a programming suspend command has been received by the control logic, if the program operation has already or is currently executing those commands, the programming operation may not be suspended. [0072]
  • If the programming operation is not suspended, the control logic returns to step 1001 to determine if the programming operation is completed. On the other hand, if the programming operation is suspended, the control logic proceeds to step 1002 to update the [0073] status register 206 to indicate that the programming operation is suspended. For one embodiment, the memory location 403 is updated to store a logic “1” to indicate the programming operation (e.g., byte-write operation) is suspended. Once the status register 206 is updated to indicate that the programming operation is suspended, the status register 206 is updated to indicate that the control logic is ready to perform a new data modification operation, as shown in step 1103. For one embodiment, the memory location 408 in the status register 206 stores the WSMS information.
  • Once the [0074] status register 206 is updated, the control logic receives a read status register command as shown in step 1104. In response to the read status register command, the flash memory device 200 automatically outputs the WSMS signal and the BWSS signal. After the WSMS signal is outputted from the flash memory array 200, the flash memory array 200 receives a read command for a memory location other than that specified by the write operation that was suspended. In other words, a read operation may not be performed on the same memory location that was specified in the programming operation that is currently being suspended.
  • Next, a read operation is performed on the selected memory location in the main memory as shown in [0075] step 1106. The control logic determines when the read operation is completed in step 1106. Once the control logic has completed the read operation, the control logic proceeds to perform step 1201 as shown in FIG. 11.
  • Once the read operation is completed, the [0076] flash memory device 200 receives a programming resume command at step 1201. The control logic then updates the status register 206 to indicate that the control logic is busy completing the programming or write operation. Additionally, the status register 206 is updated at step 1203 to indicate that the programming operation is no longer suspended. For one embodiment, the memory location 408 and the memory location 403 in the status register 400 are each updated to store a logic “0.” After steps 1202 and 1203 are completed, step 1001 is repeated.
  • Referring back to [0077] step 1003 in FIG. 9, if the flash memory device 200 determines that a full status check is to be performed, the flash memory device 200 proceeds to step 1301 in FIG. 12. At step 1301, the control logic receives a read status register command. For one embodiment, the memory location 404 (which stores the VPPS information), the memory location 402 (which stores the DPS information), and the memory location 405 (which stores the BWSLBS information) may be read from the status register 206.
  • These memory locations within the [0078] status register 206 are read to determine the various failures modes. At step 1302, the flash memory device 200 checks whether the programming voltage Vpp applied to the flash memory device 200 is within the appropriate voltage level range. If Vpp is not within an appropriate voltage level (e.g., if Vpp is not greater or equal to 3 volts), then the VPPS signal indicates a Vpp range error in step 1305. On the other hand, if Vpp is within the appropriate range, then another status check is made.
  • The [0079] flash memory device 200 also checks whether the programming operation is requested to be performed on a memory location within a locked memory block in step 1303. If the selected memory location resides within a memory block that is device protected or locked, then a device protect error results, as shown in step 1306. On the other hand, if the selected memory location resides within an unprotected or unlocked memory block, then another status check is made.
  • At [0080] step 1304, the flash memory device 200 checks whether the programming operation was performed successfully. If the programming operation was not successfully completed, then the flash memory device 200 at step 1307 detects a program operation error in step 1307 and the code terminates. On the other hand, if the programming operation was successfully completed, then the full status check is completed. For an alternative embodiment, another status check may be made, however.
  • FIGS. 13 through 17 describe an erase operation for one embodiment. Unlike the prior art flash memory devices, one embodiment distinguishes between an erase operation failure due to a device protect error and a failure due to an erase operation failure (e.g., a bad memory location). [0081]
  • Once the [0082] flash memory device 200 receives an erase command (or command sequence) in step 1401 and the address of the memory location to be erased in step 1402, the status register 206 is updated at step 1403 to indicate that the control logic is busy performing an erase operation. For one embodiment, the memory location 408 in the status register 206 is updated to store a logic “0.”
  • Next, the control logic performs a block lock check as shown in [0083] step 1404. For one embodiment, the block lock check is performed in accordance with the steps provided in FIG. 7. After the block lock check is completed, the control logic proceeds to start the erase operation.
  • Next, [0084] step 1501 in FIG. 14 determines whether the erase operation is completed. If the erase operation is completed, then at step 1502 the status register 206 is updated to indicate that the control logic is ready to perform a new data modification operation. For one embodiment, memory location 408 is updated to store a logic “1.” The flash memory device 200 then determines at step 1503 whether to perform a full status check. If a full status check is not performed, the erase operation is completed. Otherwise, the control logic proceeds to perform the full status check. For one embodiment, the full status check is performed according to the steps described in FIG. 17.
  • On the other hand, if it is determined at [0085] step 1501 that the erase operation is not completed, then the control logic determines whether the control logic has received an erase suspend command. If an erase suspend command has not been entered, then step 1501 is repeated. Otherwise, the control logic proceeds to step 1601 in FIG. 15.
  • An erase operation is suspended at designated points in the erase operation algorithm. Once an erase suspend command has been received by the [0086] flash memory device 200, the control logic may or may not suspend the erase operation, depending on what stage the control logic is at in performing the erase operation. If the erase operation is not suspended, then step 1501 is repeated. Otherwise, the control logic updates the status register 206 to indicate that the erase operation is suspended, as shown in step 1602, and the control logic is ready to perform a new data modification operation, as shown in step 1603. For one embodiment, the memory location 407 in the status register 400 is updated to store a logic “1” and the memory location 408 in the status register is updated to store a logic “1.” At step 1604, the control logic receives a read status register command. Once the status register 206 indicates that the control logic is ready to perform a new data modification operation, the control logic receives a read or programming command, as shown in step 1603. Subsequently, the read operation or programming operation is performed in step 1606.
  • After the read or program operation is completed in [0087] step 1606, step 1701 is performed as, shown in FIG. 16. At step 1701, the control logic receives an erase resume command. Next, the status register 206 is updated to indicate that the control logic is busy performing the erase operation because the erase operation is no longer suspended. For one embodiment, the memory location 408 is updated to store a logic “0” and the memory location 407 is updated to store a logic “0.” Step 1501 is then repeated.
  • The steps in FIG. 17 are performed if it is determined in [0088] step 1503 that the a full status check is to be performed. The full status check in step 1503 is used to determine the various failure modes. The control logic receives the read status register command in step 1801. For one embodiment, memory location 404 (which stores the VPPS information), memory location 402 (which stores the DPS information), memory location 406 (which stores the ECLBS information), and memory location 405 (which stores the BWSLBS information), are read during the full status check.
  • A programming voltage Vpp range error is detected in [0089] step 1806 when the status register 206 indicates that the Vpp level is not in the appropriate range in step 1802. A device protect error 1807 is detected in step 1807 when the status register indicates that the attempted erase operation requested a protected or locked memory block to be modified, as shown in step 1803. A command sequence error is detected in step 1808 if at step 1804 both the memory locations 405 and 406 are found to be set to a logic “1.” An erase operation error is detected in step 1809 when the status register indicates that the erase operation was not successfully completed. For one embodiment, the full status check is completed after performing the four status checks described above.
  • In the foregoing specification, the invention has been described with references to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense. [0090]

Claims (29)

What is claimed is:
1. A memory device, comprising:
a memory array;
a register configured to store at least one bit indicating a suspend status of a write operation; and
a control circuit coupled to said memory array and said register, said control circuit configured to update said register and to control the output of a status signal representing said suspend status of said write operation.
2. The memory device of
claim 1
, wherein said register resides within said control circuit.
3. The memory device of
claim 1
, wherein said control circuit is configured to receive a status request signal and said register is configured to output said status signal in response to said status request signal, said status signal having a first state to indicate said write operation is suspended and a second state to indicate said write operation is not suspended.
4. The memory device of
claim 3
, further comprising at least one data input/output coupled to said control circuit, wherein at least one data inputs/output is configured to receive said status request signal from a processor and to provide said status signal to said processor.
5. The memory device of
claim 1
, further comprising a status output coupled to said register, wherein said status output is configured to provide a second status signal when said status output is polled, said second status signal having a first state to indicate said write operation is suspended and a second state to indicate said write operation is not suspended.
6. The memory device of
claim 5
, wherein said status output represents an output pin.
7. The memory device of
claim 1
, wherein said write operation represents a byte write operation.
8. The memory device of
claim 1
, wherein said control circuit includes a first state machine configured to update at least one of said bits indicating said suspend status of said write operation in response to a suspend signal.
9. The memory device of
claim 8
, wherein said suspend signal represents a byte write suspend command.
10. The memory device of
claim 8
, wherein said control circuit further includes a second state machine coupled to said first state machine and configured to control the output said status signal in response to a status request signal.
11. The memory device of
claim 10
, wherein said status request signal is a read status register command.
12. A memory device, comprising:
a memory array;
a register is configured to store at least one bit indicating a protection status of a data modification operation; and
a control circuit coupled to said memory array and said register, said control circuit is configured to update said register and to control the output of a status signal representing said protection status of said data modification operation.
13. The memory device of
claim 12
, wherein said register resides within said control circuit.
14. The memory device of
claim 12
, wherein said control circuit is configured to receive a status request signal and said register is configured to output said status signal in response to said status request signal, said status signal having a first state to indicate said data modification operation attempted to access at least one memory location within a protected memory block and a second state to indicate said data modification operation accessed at least one of said memory locations within an unprotected memory block.
15. The memory device of
claim 14
, further comprising at least one data input/output coupled to said control circuit, wherein at least one data inputs/output is configured to receive said status request signal from a processor and to provide said status signal to said processor.
16. The memory device of
claim 12
, wherein said data modification operation is a programming operation or an erase operation.
17. The memory device of
claim 12
, wherein said control circuit includes a first state machine configured to update at least one of said bits indicating said protection status of said data modification operation in response to a block lock configuration signal.
18. The memory device of
claim 17
, wherein said block lock configuration signal includes a set block lock bit command.
19. The memory device of
claim 18
, wherein said control circuit further includes a second state machine coupled to said first state machine and configured to control the output said status signal in response to a status request signal.
20. A method of providing the suspend status of a programming operation in a memory device, comprising the steps of:
(a) performing a programming operation to a first memory location;
(b) prior to the completion of said programming operation, receiving a suspend signal;
(c) determining whether or not to suspend said programming operation;
(d) if said programming operation is suspended, updating, if necessary, a status register to indicate said programming operation is suspended; and
(e) providing an output signal to indicate said suspend status of programming operation.
21. The method of
claim 20
, wherein step (e) comprises the steps of:
(1) receiving a read status register signal; and
(2) providing said output signal in response to said read status register signal.
22. The method of
claim 20
, wherein step (e) comprises the step of providing said output signal at a dedicated status output.
23. The method of
claim 20
, further comprising the steps of:
(f) performing a second data modification operation to a second memory location;
(g) after the completion of said second data modification operation, updating, if necessary, said status register to indicate said write operation is not suspended; and
(h) resuming said first data modification operation.
24. The method of
claim 23
, wherein said second data modification operation is a read operation.
25. The method of
claim 20
, further comprising, prior to step (a), the step of:
(f) initializing said status register to indicate said write operation is not suspended.
26. A method of providing the protection status of a data modification operation in a memory device, comprising the steps of:
(a) performing a data modification operation to a memory location;
(b) determining said protection status of said memory location;
(c) providing an output signal to indicate said protection status of said memory location.
27. The method of
claim 26
, wherein step (c) comprises the steps of:
(1) receiving a read status signal; and
(2) providing said output signal in response to said read status signal.
28. The method of
claim 26
, further comprising, prior to step (a), the step of:
(d) initializing a status register to indicate said memory location is protected from data modifications.
29. The method of
claim 26
, wherein step (b) comprises the steps of:
(1) performing a read operation to a location within a block lock memory array that corresponds to said memory location; and
(2) updating a status register.
US08/814,928 1997-02-27 1997-02-27 Status indicators for flash memory Abandoned US20010011318A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US08/814,928 US20010011318A1 (en) 1997-02-27 1997-02-27 Status indicators for flash memory
US09/557,184 US6671785B2 (en) 1997-02-27 2000-04-21 Programming protection status indicators for flash memory
US10/927,338 US7093064B2 (en) 1997-02-27 2004-08-25 Programming suspend status indicator for flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/814,928 US20010011318A1 (en) 1997-02-27 1997-02-27 Status indicators for flash memory

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US09/557,184 Division US6671785B2 (en) 1997-02-27 2000-04-21 Programming protection status indicators for flash memory
US10/927,338 Continuation US7093064B2 (en) 1997-02-27 2004-08-25 Programming suspend status indicator for flash memory

Publications (1)

Publication Number Publication Date
US20010011318A1 true US20010011318A1 (en) 2001-08-02

Family

ID=25216377

Family Applications (3)

Application Number Title Priority Date Filing Date
US08/814,928 Abandoned US20010011318A1 (en) 1997-02-27 1997-02-27 Status indicators for flash memory
US09/557,184 Expired - Lifetime US6671785B2 (en) 1997-02-27 2000-04-21 Programming protection status indicators for flash memory
US10/927,338 Expired - Fee Related US7093064B2 (en) 1997-02-27 2004-08-25 Programming suspend status indicator for flash memory

Family Applications After (2)

Application Number Title Priority Date Filing Date
US09/557,184 Expired - Lifetime US6671785B2 (en) 1997-02-27 2000-04-21 Programming protection status indicators for flash memory
US10/927,338 Expired - Fee Related US7093064B2 (en) 1997-02-27 2004-08-25 Programming suspend status indicator for flash memory

Country Status (1)

Country Link
US (3) US20010011318A1 (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457122B1 (en) * 1999-06-18 2002-09-24 Phoenix Technologies Ltd. Fault tolerant process for the delivery of programs to writeable storage device utilizing pre-operating system software/firmware
US6493807B1 (en) * 1999-07-01 2002-12-10 Intel Corporation Updating flash blocks
US6931498B2 (en) * 2001-04-03 2005-08-16 Intel Corporation Status register architecture for flexible read-while-write device
US20060083060A1 (en) * 2004-10-15 2006-04-20 Ricardo Riva Reggiori Flexible OTP sector protection architecture for flash memories
US7035964B1 (en) * 1999-03-17 2006-04-25 Robert Bosch Gmbh Method and device for securing data when altering the storage contents of control units
US20080040559A1 (en) * 2006-08-14 2008-02-14 Barry Joe Wolford Method and Apparatus to Enable the Cooperative Signaling of a Shared Bus Interrupt in a Multi-Rank Memory Subsystem
WO2008045856A2 (en) * 2006-10-11 2008-04-17 Qualcomm Incorporated Concurrent reading of status registers
US20080114923A1 (en) * 2006-11-14 2008-05-15 Samsung Electronics Co., Ltd. Apparatus and method for controlling operation processing in nonvolatile memory
US20130254454A1 (en) * 2012-03-23 2013-09-26 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US20170060484A1 (en) * 2015-08-28 2017-03-02 Kabushiki Kaisha Toshiba Memory system having a semiconductor memory device with protected blocks
US9601169B2 (en) * 2013-08-07 2017-03-21 SK Hynix Inc. Semiconductor memory device, memory system including the same and operating method thereof
WO2018022544A1 (en) 2016-07-26 2018-02-01 Micron Technology, Inc. Accessing status information
WO2018045773A1 (en) * 2016-09-07 2018-03-15 京东方科技集团股份有限公司 Method and apparatus for updating data in memory used for electrical compensation
US9923762B1 (en) * 2013-08-13 2018-03-20 Ca, Inc. Upgrading an engine when a scenario is running
US10628076B1 (en) * 2018-10-01 2020-04-21 Micron Technology, Inc. Data erasure in memory sub-systems
US11321022B2 (en) * 2019-12-31 2022-05-03 Kioxia Corporation Systems and methods for scheduling flash operations

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728812B1 (en) * 1997-06-16 2004-04-27 Citizen Watch Co., Ltd. Portable information terminal
US6711701B1 (en) * 2000-08-25 2004-03-23 Micron Technology, Inc. Write and erase protection in a synchronous memory
US7036005B2 (en) * 2001-12-31 2006-04-25 Intel Corporation Method and apparatus for modifying the contents of revision identification register
ITRM20020148A1 (en) * 2002-03-18 2003-09-18 Micron Technology Inc PROGRAMMING OF FLASH MEMORIES.
US7398554B1 (en) * 2002-04-02 2008-07-08 Winbond Electronics Corporation Secure lock mechanism based on a lock word
KR100492774B1 (en) * 2002-12-24 2005-06-07 주식회사 하이닉스반도체 Nonvolatile Memory Device Comprising Write Protected Region
KR100614639B1 (en) * 2003-07-24 2006-08-22 삼성전자주식회사 Memory system with lockable buffer memory and information processing system including the same
US7228400B2 (en) * 2003-12-31 2007-06-05 Intel Corporation Control of multiply mapped memory locations
US7770059B1 (en) * 2004-03-26 2010-08-03 Emc Corporation Failure protection in an environment including virtualization of networked storage resources
US20050240739A1 (en) * 2004-04-27 2005-10-27 Impinj. Inc., A Delaware Corporation Memory devices signaling task completion and interfaces and software and methods for controlling the same
US7182634B2 (en) * 2004-06-29 2007-02-27 Intel Corporation Connector cell having a supported conductive extension
US7239552B2 (en) * 2004-09-02 2007-07-03 Micron Technology, Inc. Non-volatile one time programmable memory
ITMI20050063A1 (en) * 2005-01-20 2006-07-21 Atmel Corp METHOD AND SYSTEM FOR THE MANAGEMENT OF A SUSPENSION REQUEST IN A FLASH MEMORY
US7418541B2 (en) * 2005-02-10 2008-08-26 International Business Machines Corporation Method for indirect access to a support interface for memory-mapped resources to reduce system connectivity from out-of-band support processor
US7890721B2 (en) * 2005-02-16 2011-02-15 Atmel Corporation Implementation of integrated status of a protection register word in a protection register array
JP2006276967A (en) * 2005-03-28 2006-10-12 Renesas Technology Corp Semiconductor apparatus
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
ITMI20050799A1 (en) 2005-05-03 2006-11-04 Atmel Corp METHOD AND CONFIGURATION SYSTEM OF PARAMETERS FOR A FLASH MEMORY
JP4250162B2 (en) * 2005-09-16 2009-04-08 シャープ株式会社 Data processing device
KR100725417B1 (en) * 2006-02-22 2007-06-07 삼성전자주식회사 Apparatus and method for operating flash memory according to priority
US7802114B2 (en) * 2007-03-16 2010-09-21 Spansion Llc State change sensing
US7599241B2 (en) * 2007-08-06 2009-10-06 Sandisk Corporation Enhanced write abort mechanism for non-volatile memory
US7895404B2 (en) * 2008-02-14 2011-02-22 Atmel Rousset S.A.S. Access rights on a memory map
US9437312B2 (en) * 2009-02-26 2016-09-06 Sandisk Il Ltd. Management of write-protected data in a semiconductor memory
US9489316B2 (en) * 2013-03-15 2016-11-08 Freescale Semiconductor, Inc. Method and device implementing execute-only memory protection
CN103676747B (en) * 2013-12-23 2017-01-04 华润万东医疗装备股份有限公司 A kind of flat finder communication control system
US10514862B2 (en) * 2016-07-21 2019-12-24 Micron Technology, Inc. Memory device including concurrent suspend states for different operations
KR102299682B1 (en) * 2017-09-13 2021-09-09 삼성전자주식회사 Operation method of memory contollrer, storage device including the same, and operation method of storage device
US10318438B1 (en) * 2017-12-07 2019-06-11 Nuvoton Technology Corporation Secure memory access using memory read restriction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355464A (en) 1991-02-11 1994-10-11 Intel Corporation Circuitry and method for suspending the automated erasure of a non-volatile semiconductor memory
US5592641A (en) * 1993-06-30 1997-01-07 Intel Corporation Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status
US5513136A (en) * 1993-09-27 1996-04-30 Intel Corporation Nonvolatile memory with blocks and circuitry for selectively protecting the blocks for memory operations
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5749088A (en) * 1994-09-15 1998-05-05 Intel Corporation Memory card with erasure blocks and circuitry for selectively protecting the blocks from memory operations
JP3059349B2 (en) 1994-12-19 2000-07-04 シャープ株式会社 IC card and flash memory parallel processing method
US5784291A (en) * 1994-12-22 1998-07-21 Texas Instruments, Incorporated CPU, memory controller, bus bridge integrated circuits, layout structures, system and methods
US5835733A (en) * 1994-12-22 1998-11-10 Texas Instruments Incorporated Method and apparatus for implementing a single DMA controller to perform DMA operations for devices on multiple buses in docking stations, notebook and desktop computer system
US6148360A (en) 1996-09-20 2000-11-14 Intel Corporation Nonvolatile writeable memory with program suspend command
US5954818A (en) * 1997-02-03 1999-09-21 Intel Corporation Method of programming, erasing, and reading block lock-bits and a master lock-bit in a flash memory device

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035964B1 (en) * 1999-03-17 2006-04-25 Robert Bosch Gmbh Method and device for securing data when altering the storage contents of control units
US6457122B1 (en) * 1999-06-18 2002-09-24 Phoenix Technologies Ltd. Fault tolerant process for the delivery of programs to writeable storage device utilizing pre-operating system software/firmware
US6493807B1 (en) * 1999-07-01 2002-12-10 Intel Corporation Updating flash blocks
US6931498B2 (en) * 2001-04-03 2005-08-16 Intel Corporation Status register architecture for flexible read-while-write device
US20060083060A1 (en) * 2004-10-15 2006-04-20 Ricardo Riva Reggiori Flexible OTP sector protection architecture for flash memories
US7130209B2 (en) 2004-10-15 2006-10-31 Atmel Corporation Flexible OTP sector protection architecture for flash memories
US7864557B2 (en) 2004-10-15 2011-01-04 Atmel Corporation Flexible OTP sector protection architecture for flash memories
US9262326B2 (en) 2006-08-14 2016-02-16 Qualcomm Incorporated Method and apparatus to enable the cooperative signaling of a shared bus interrupt in a multi-rank memory subsystem
US20080040559A1 (en) * 2006-08-14 2008-02-14 Barry Joe Wolford Method and Apparatus to Enable the Cooperative Signaling of a Shared Bus Interrupt in a Multi-Rank Memory Subsystem
WO2008045856A2 (en) * 2006-10-11 2008-04-17 Qualcomm Incorporated Concurrent reading of status registers
WO2008045856A3 (en) * 2006-10-11 2008-07-24 Qualcomm Inc Concurrent reading of status registers
US7593279B2 (en) 2006-10-11 2009-09-22 Qualcomm Incorporated Concurrent status register read
US20080114923A1 (en) * 2006-11-14 2008-05-15 Samsung Electronics Co., Ltd. Apparatus and method for controlling operation processing in nonvolatile memory
US8996782B2 (en) * 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US20130254454A1 (en) * 2012-03-23 2013-09-26 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US9304691B2 (en) 2012-03-23 2016-04-05 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US9761287B2 (en) * 2013-08-07 2017-09-12 SK Hynix Inc. Semiconductor memory device, memory system including the same and operating method thereof
US9601169B2 (en) * 2013-08-07 2017-03-21 SK Hynix Inc. Semiconductor memory device, memory system including the same and operating method thereof
US9923762B1 (en) * 2013-08-13 2018-03-20 Ca, Inc. Upgrading an engine when a scenario is running
US20170060484A1 (en) * 2015-08-28 2017-03-02 Kabushiki Kaisha Toshiba Memory system having a semiconductor memory device with protected blocks
US10235070B2 (en) 2015-08-28 2019-03-19 Toshiba Memory Corporation Memory system having a semiconductor memory device with protected blocks
US10310755B2 (en) * 2015-08-28 2019-06-04 Toshiba Memory Corporation Memory system having a semiconductor memory device with protected blocks
JP2017045415A (en) * 2015-08-28 2017-03-02 株式会社東芝 Memory system
TWI633459B (en) * 2015-08-28 2018-08-21 東芝記憶體股份有限公司 Memory system and method for protecting memory cells
EP3491529A4 (en) * 2016-07-26 2020-01-15 Micron Technology, Inc. Accessing status information
WO2018022544A1 (en) 2016-07-26 2018-02-01 Micron Technology, Inc. Accessing status information
US10725952B2 (en) 2016-07-26 2020-07-28 Micron Technology, Inc. Accessing status information
WO2018045773A1 (en) * 2016-09-07 2018-03-15 京东方科技集团股份有限公司 Method and apparatus for updating data in memory used for electrical compensation
US10642523B2 (en) 2016-09-07 2020-05-05 Boe Technology Group Co., Ltd. Method and apparatus for updating data in a memory for electrical compensation
US10628076B1 (en) * 2018-10-01 2020-04-21 Micron Technology, Inc. Data erasure in memory sub-systems
US11237755B2 (en) 2018-10-01 2022-02-01 Micron Technology, Inc. Data erasure in memory sub-systems
US11775198B2 (en) 2018-10-01 2023-10-03 Micron Technology, Inc. Data erasure in memory sub-systems
US11321022B2 (en) * 2019-12-31 2022-05-03 Kioxia Corporation Systems and methods for scheduling flash operations

Also Published As

Publication number Publication date
US6671785B2 (en) 2003-12-30
US20020095545A1 (en) 2002-07-18
US20050024954A1 (en) 2005-02-03
US7093064B2 (en) 2006-08-15

Similar Documents

Publication Publication Date Title
US7093064B2 (en) Programming suspend status indicator for flash memory
US7292480B2 (en) Memory card having buffer memory for storing testing instruction
US6446179B2 (en) Computing system with volatile lock architecture for individual block locking on flash memory
US7117328B2 (en) Non-volatile data storage system and data storaging method
US6388919B2 (en) Memory controller for flash memory system and method for writing data to flash memory device
US6154819A (en) Apparatus and method using volatile lock and lock-down registers and for protecting memory blocks
US6731537B2 (en) Non-volatile memory device and data storing method
US7164610B2 (en) Microcomputer having a flush memory that can be temporarily interrupted during an erase process
US7210012B2 (en) Write-protection blocks for non-volatile semiconductor memory device
US6073243A (en) Block locking and passcode scheme for flash memory
US20020039312A1 (en) Nonvolatile memory and method of writing data thereto
US6189070B1 (en) Apparatus and method for suspending operation to read code in a nonvolatile writable semiconductor memory
US5954818A (en) Method of programming, erasing, and reading block lock-bits and a master lock-bit in a flash memory device
US20050273550A1 (en) Permanent memory block protection in a flash memory device
US20090070523A1 (en) Flash memory device storing data with multi-bit and single-bit forms and programming method thereof
JP2003507840A (en) Leak detection and repair method by external trigger
USRE42551E1 (en) Block locking apparatus for flash memory
US5721877A (en) Method and apparatus for limiting access to nonvolatile memory device
JP3152535B2 (en) Data processing device
JPH0714392A (en) Nonvolatile semiconductor memory and semiconductor disk device using the same
US6549482B2 (en) Method and apparatus to provide real-time access to flash memory features
JPH0729392A (en) Nonvolatile semiconductor memory and semiconductor disk device using the same
US6898680B2 (en) Minimization of overhead of non-volatile memory operation
US8225051B2 (en) Access control method for a memory, memory controller for controlling access to the memory, and data processing apparatus
US6772307B1 (en) Firmware memory having multiple protected blocks

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DALVI, VISHRAM P.;ROZMAN, RODNEY R.;REEL/FRAME:008694/0076;SIGNING DATES FROM 19970810 TO 19970818

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION