WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Solid state recorder with flexible width data bus utilizing lock mapping and error correction and detection circuits    
United States Patent5408628   
Link to this pagehttp://www.wikipatents.com/5408628.html
Inventor(s)Ameti; Aitan (German Town, MD)
AbstractA solid state data recorder employs a solid state memory to record data in the form of data words of variable length transmitted to the memory on a flexible width data bus. The memory is monitored to determine failed memory locations, and such locations are mapped out so as not to be used to store data. Bus lines are selected lines in accordance with mapped out memory locations in order to transfer the variable length data words to and from the memory. By employing the variable length data words and flexible width data bus, loss of useable recording space in the memory is very gradual, thus minimizing the amount of spare memory area required.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5408628
Solid state recorder with flexible width data bus utilizing lock mapping

     and error correction and detection circuits - US Patent 5408628 Drawing
Solid state recorder with flexible width data bus utilizing lock mapping and error correction and detection circuits
Inventor     Ameti; Aitan (German Town, MD)
Owner/Assignee     Odetics, Inc. (Anaheim, CA)
Patent assignment
All assignments
Publication Date     April 18, 1995
Application Number     07/910,720
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     July 7, 1992
US Classification     714/48 714/25 714/723
Int'l Classification     G06F 012/04 G06F 013/00
Examiner     Dixon; Joseph L.
Assistant Examiner     Asta; Frank J.
Attorney/Law Firm     Graham & James
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/425 395/400 364/200 MS File 364/900 MS File 371/2.1 371/2.2 371/10.1 371/10.2 371/16.5 371/21.1 371/21.6 371/37.1
Patent Tags     solid state recorder flexible width data bus utilizing lock mapping error correction detection circuits
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5247638
O'Brien
710/68
Sep,1993

[0 after 0 votes]
5243428
Challapali
348/607
Sep,1993

[0 after 0 votes]
5128941
Russell
714/702
Jul,1992

[0 after 0 votes]
5022029
Guichon
714/761
Jun,1991

[0 after 0 votes]
4901319
Ross
714/788
Feb,1990

[0 after 0 votes]
4864572
Rechen
714/701
Sep,1989

[0 after 0 votes]
4718067
Peters
714/747
Jan,1988

[0 after 0 votes]
4641309
Nakano
714/747
Feb,1987

[0 after 0 votes]
4593267
Kuroda

Jun,1986

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A data recorder comprising:

memory means for storing data including a plurality of data word storage areas wherein each of the data word storage areas includes at least one storage location;

a data bus for conveying data to and from the memory means, the data bus having a plurality of bus lines;

input means for receiving data, forming data words of variable word length, designating particular bus lines for data transmission to the memory means and providing the data words to the designated bus lines for transmission to the memory means and storage in a selected word storage area, wherein the number of bits in each data word does not exceed the number of bus lines and the data words are formed and bus lines designated in accordance with the number and positions of storage locations in each data word storage area which are to be employed; and

output means for causing a selected stored data word to be read out from the memory means.

2. The recorder of claim 1 wherein:

each data word includes at least one separable logical word; and

the output means includes:

means for receiving the selected data word from the memory means;

means for separating each data word into at least one logical word and providing the logical words in a preselected sequential order as output words.

3. The recorder of claim 2 wherein:

each data word includes at least one separable logical word wherein the number of logical words in a data word is the word length; and

the input means includes:

receiving means for sequentially receiving logical words and combining logical words to form data words.

4. The recorder of claim 1 further including:

addressing means for addressing a data word storage area; and

mapping means for maintaining a record of which storage locations in each data word storage area can be employed for storing data.

5. The recorder of claim 4 further including:

test means for detecting failed storage locations; and wherein

said mapping means maintains a said record indicating each failed storage location.

6. The recorder of claim 5 wherein:

each data word storage area has the same number of storage locations;

each data word storage area and each storage location has a physical location within the memory means; and

the mapping means includes:

a logical-to-physical mapping means for maintaining a logical memory map in which a logical memory is correlated with the physical locations of the data word storage areas within the memory means, wherein:

the logical memory map is updated to indicate failed storage locations detected by the test means; and

the logical memory map indicates the ordering in which data transmitted to the memory means from the input means is to be stored within the memory means such that data transmitted to the memory means is sequentially stored first in data word storage areas having the maximum number of usable storage locations and then data transmitted to the memory means is stored in data word storage areas having fewer usable storage locations.

7. The recorder of claim 6 wherein:

each data word includes at least one logical word;

the logical words which are grouped in equal size groups to form frames and data is transmitted to the memory means a minimum of one frame at a time;

the recorder further includes means for indicating the boundary of a frame with respect to a data word, whereby portions of frames can be recorded contiguously within a single data word storage area.

8. The recorder of claim 6 wherein the memory means further comprises a plurality of blocks wherein:

each block includes a plurality of data word storage areas; and

the logical-to-physical mapping means maintains the logical memory map such that the logical memory is correlated with the physical locations of each block, wherein:

the logical memory map indicates the ordering in which data transmitted to the memory means from the input means is to be stored within the memory means such that data transmitted to the memory means is sequentially stored first in blocks having the maximum number of usable storage locations and then data transmitted to the memory means is stored in blocks having fewer usable storage locations.

9. The recorder of claim 4 wherein the mapping means includes a logical-to-physical mapping means for maintaining a logical memory map in which a logical memory is correlated with the memory means.

10. The recorder of claim 5 wherein said the addressing means comprises storage addressing means for addressing data word storage areas for recording data words wherein said storage addressing means accesses said record to ascertain failed storage locations and records data words only in storage locations which have not failed.

11. The recorder of claim 1 wherein the number of bus lines in the data bus is the same as the number of storage locations in the corresponding data word storage area.

12. A data recorder comprising:

memory means for storing data including a plurality of data word storage areas wherein each data word storage area includes a plurality of storage locations;

a data bus having a plurality of bus lines for carrying data to and from the storage locations of each data word storage area;

addressing means for addressing data word storage areas to enable one data word at a time to be transmitted to or from the memory means on the data bus;

input means coupled to the data bus for receiving input words whose length is less than the length of a data word storage area and combining one or more input words to form a portion of a data word, the input means including error detection and correction encoding means for generating an error detection word based upon at least the formed portion of a data word and means for combining the formed portion of a data word and the error detection word to form a data word wherein the data words have a variable word length of up to the number of storage locations in each storage area; and means for providing the data word to the data bus for carrying to the memory means;

output means for receiving data words from the memory means via the data bus, performing error detection and correction to detect and correct errors in input words contained in a received data word, dividing the data word into output words corresponding to input words; and

control means for determining which storage locations of each data word storage area are to be used for each data word and controlling the input means to form data words of a word length that does not exceed the number of storage locations to be used of the storage area to be used.

13. The recorder of claim 12 wherein the control means includes table means for maintaining a table indicating which storage locations of each data word can be employed for storing data.

14. The recorder of claim 13 wherein:

the memory means further comprises a plurality of blocks having a plurality of data word storage areas and

wherein the table means maintains said table identify for each block the storage locations of each data word in the block which may be used for storing data such that if any storage location of any storage area within the block may not be used than that storage location also may not be used for any other storage area within the block.

15. The recorder of claim 14 including test means for detecting failed storage locations in the memory means, wherein the table means modifies the table to indicate that the failed storage locations are not to be used for storing data.

16. The recorder of claim 15 wherein:

data is recorded in the form of frames each including a plurality of input words in a contiguous manner in the memory means;

the control means includes means for controlling the input means to merge input words contained in two different frames to form a portion of a data word and for controlling the output means to read out from a data word only words from a designated frame.

17. The recorder of claim 16 wherein each block has a physical address within the memory means; and the control means further includes logical memory space means for defining a logical memory space including a plurality of logical blocks of sequential addresses, mapping means for mapping each logical block to a physical block of the memory means, and means for receiving a logical block address from the logical memory space means and causing the addressing means to address the corresponding physical block.

18. The recorder of claim 17 wherein the mapping means operates to map logical blocks in order of decreasing number of storage locations available for storing data in the corresponding physical blocks.

19. The recorder of claim 17 wherein the control means further comprises means for receiving a logical block address and causing the addressing means to address the corresponding physical block.

20. The recorder of claim 12 wherein:

the input means includes masking means for providing one or more masking words corresponding to storage locations which are not to be employed, wherein the error detection word is formed based upon the formed portion of the data word and the masking words; and

the output means includes means for providing one or more of said masking words when a data word is read out of the memory, combining the one or more masking words and the data word to form a combined masking and data word and performing error detection and correction based upon the combined masking and data word.

21. The recorder of claim 12 wherein the control means further comprises means for controlling the output means to select the portion of a data word which has been read out of the memory means to be used to form an output word.

22. A memory system comprising:

memory means for storing data in a plurality of data word storage areas, wherein each data word storage area has a plurality of bit storage locations;

a bus having a plurality of separate data lines for transmitting data to and from the memory wherein there is the same number of data lines as there are storage locations in each data word storage area;

addressing means for addressing one data word storage area at a time; and

control means for forming data words of a variable number of bits wherein the number of bits in each data word does not exceed the number of data lines and providing the bits on selected lines of the data bus for storage in corresponding storage locations of respective data word storage areas.

23. A method for recording data in a data recorder wherein the data recorder comprises a memory means having a plurality of data word storage areas each having a plurality storage locations for storing a single bit, a data bus having a plurality of bus lines, wherein the number of storage locations in each data word storage area is the same as the number of bus lines, comprising:

receiving data in the processing means in the form of input words comprising at least one bit;

forming data words of varying numbers of bits wherein the forming step includes combining input words and the number of bits in each data word does not exceed the number of bus lines;

designating bus lines for transmitting data from the processing means to the memory means wherein each bus line carries one bit of each data word;

transferring data from the processing means to the memory means through the designated bus lines wherein each bus line corresponds to a particular storage location in each data word storage area.

24. The method of claim 23 further comprising detecting failed storage locations.

25. The method of claim 24 wherein the designating bus lines step designates only bus lines corresponding to storage locations that have not been determined to be failed storage locations in the detecting step.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention is directed to digital data transmission employing a data bus and data storage in a solid state memory which is accessed by the bus. More particularly, the present invention is directed to a bus system in which a variable number of bus lines are employed to transmit data and a variable number of storage locations corresponding to different data word locations in a memory are employed. The invention has a particular application with respect to solid state data recorders such as those employed in space missions in satellites or manned spacecraft. Solid state data recorders employ solid state memory devices to store data, in contrast to the typical storage medium of magnetic tape. Such recorders can provide improved reliability in that they do not require complicated tape handling mechanisms. In solid state recorders, data is stored by appropriately addressing a random access memory (RAM) and recording a series of data words of a predetermined number of bits each.

Since there are no moving mechanisms for tape handling or the like, solid state recorders can provide a high degree of reliability. However, such recorders are typically very expensive due to the high cost of memory. Moreover, in the space environment where repair generally is not possible during the course of a mission, provision must be made to ensure a certain recording capacity throughout the life of the mission. Thus, sufficient overall memory capacity must be provided such that even after failure of a number of memory devices during a mission sufficient overall capacity will be retained. In effect, "spare" memory devices must be provided to replace failed devices in order to maintain a nominal recording capacity. The necessity to provide spare devices further increases the overall cost of the system.

2. Description of the Prior Art

Various solid state recorders have been proposed in the past, such as that shown in U.S. Pat. No. 4,970,648 to Capots. The recorder disclosed in this patent has the capability of detecting errors in its memory and avoiding use of portions of the memory that have errors. The memory is controlled by a control CPU on the basis of "pages", which are the smallest portion of the memory array which has meaning to the CPU. The system evaluates the memory to detect pages which have non-correctable errors. Such pages are then removed from use. In this fashion, failed memory locations are avoided and reliability is maintained.

Although a system in which memory pages are removed provides the necessary reliability, the cost can be extremely high in terms of memory requirements. This is especially so since failures are very often isolated in a relatively small memory area (even an individual storage location), and the removal of an entire page of memory often results in the removal of a significant amount of usable memory along with failed memory. The result is that greater memory overhead is required to maintain the specified data capacity, and cost is significantly increased.

SUMMARY OF THE INVENTION

The present invention is directed to a solid state recorder in which memory sparing efficiency is greatly improved and the removal of memory is much more closely mapped to correspond to memory devices which have actually failed, thereby avoiding the unnecessary removal of usable memory. This is accomplished by employing a unique flexible width data bus and variable word length system. The system nominally records data words of a predetermined length, e.g., seventy-two bits. These data words are provided to the memory via a seventy-two bit data bus. The data words are formed of plural input words of, e.g., sixteen bits each, which have been combined along with error detection and correction bits to form a seventy-two bit data word. When failed memory locations are detected, fewer input words are combined and the length of the formed data word is reduced. The shortened data word is provided along appropriately selected bus lines to memory locations in the word storage area which are still usable. Bus lines corresponding to failed storage locations are masked out and are not employed to store input data. In this fashion, memory can be removed on a fraction of a data word basis, thus greatly reducing the amount of good memory area which is taken out of use. In a similar manner, if a bus line, bus driver or bus receiver fails, the bus line can be masked out so as to maintain the integrity of the remaining bus lines.

Upon readout, data from the failed memory areas is not employed and the input words which make up a particular data word are extracted. The invention greatly reduces the rate at which usable memory is removed by employing a variable data word length and a variable width data bus. That is, although a data bus of predetermined width is provided, the number of lines of the data bus which are used to transmit input data words varies depending upon what locations of a memory are to be employed.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention will be described with reference to the accompanying drawings, wherein:

FIG. 1 is a block diagram of the solid state recorder of the present invention;

FIG. 2 is a diagram illustrating the physical memory configuration of the present invention;

FIG. 3 is a diagram illustrating the logical memory mapping function which maps physical blocks of memory to logical blocks and indicates attributes of physical blocks;

FIG. 4 illustrates a logical memory configuration which has been altered to reconfigure the logical memory upon detection of a failed memory location;

FIG. 5 is a diagram illustrating the logical-to-physical mapping operation and the attribute table indicating failed memory locations which are to be avoided;

FIG. 6 is a diagram illustrating the logical-to-physical mapping to place logical blocks with an increasing number of failed memory locations toward the end of a partition;

FIGS. 7A, 7B and 7C are a block diagram of the input circuit of the recorder of the present invention;

FIGS. 8A, 8B and 8C are a block diagram of the output circuit of the present invention; and

FIGS. 9A, 9B and 9C are a block diagram of the address generator of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The following description is of the best presently contemplated mode of carrying out the invention. This description is made for the purpose of illustrating the general principles of the invention and is not to be taken in a limiting sense. The scope of the invention is best determined with reference to the appended claims. In particular, although the invention is described in terms of a solid state recorder, the flexible width data bus of the present invention may also be used for other applications.

Referring to FIG. 1, the solid state recorder of the present invention includes a memory array 10 which in the present embodiment is formed of eight separate memory cards each including one hundred forty-four static random access memory (SRAM) devices per side. Each SRAM has a capacity of one megabit that is organized as 128K by 8 bits wide. The total capacity of the memory array is therefore 2.25 gigabits. As will be discussed in more detail subsequently, the memory is configured to provide 1.8 gigabits of user memory, 225 megabits of error detection and correction memory and 225 megabits of spare memory for replacing failed memory sections.

Data is transmitted to and from the memory cards 10 via a seventy-two bit wide (i.e., seventy-two separate lines) data bus 12. The data bus is coupled to an input and output circuit 14 which receives data to be stored in the memory 10 at a data input port and provides data read out from the memory 10 at a data output port. A buffer 16 is connected on the data bus between the memory 10 and the input and output circuit 14.

Addressing of the appropriate memory locations is controlled by address generator circuits 18 which provide a twenty-five bit address to the memory 10 by way of an address bus 20 having a buffer 22. The address generators 18 also communicate with the input and output circuit 14 as will be described subsequently. In addition to the address signals, the bus 20 also provides read/write control signals to the memory 10. These are provided from a main memory arbitration logic and read/write sequence generator 24. This circuitry communicates with the input and output circuit 14 via interface 25, a built-in test circuit 26 via interface 29 and address generator circuits 18 and 28 via interfaces 21 and 23 and determines access to the data bus 12 as well as controlling reading and writing operations of the memory 10. The arbitration logic receives bus requests and, based upon a fixed priority, grants bus access to one requesting circuit at a time.

The built-in test circuit 26 replicates the input and output circuit 14 to provide test data to store in the memory 10 and subsequently read out in order to detect failed memory locations. Separate address generator circuits 28 are associated with the built-in test circuit.

In the present embodiment of the invention, the input and output circuit, addressing circuits and built-in test circuit are formed as special purpose integrated circuits in order to provide maximum speed of operation, with a microprocessor subsystem 30 performing background processing operations. However, it should be noted that the functions of these logic circuits could all be accomplished by a microprocessor configuration.

The solid state recorder system treats the memory 10 as a logical memory space which is divided into a number of partitions each of which include a number of blocks of memory. Data is requested to be written into or read out of the logical memory by means of logical requests provided to the address generators 18 and 28 from the input and output circuit 14 or the built-in test circuit 26 via address generator interfaces 17 and 27, respectively. The address generators 18 and 28 in turn provide logical addresses on lines 34 and 36, respectively, to a block logical-to-physical translation table and attributes memory 38 which includes memory containing logical-to-physical mapping information for the main memory 10. Arbitration between the mapping table and attributes is controlled by arbitration circuit 37 communicating via interfaces 39 and 41 to address generators. Control signals are provided on line 43. Physical address data corresponding to the logical address is provided back to the address generators 18 and 28 via lines 40 and 42, respectively, and are used by the address generators 18 and 28 to generate an overall physical address to the memory 10. Attribute data is provided back to the input and output circuit 14 and test circuit 26 via lines 40 and 42.

In operation, the system performs actual transfer of data between the input and output ports to the memory array 10 without intervention by the microprocessor 30. The microprocessor subsystem interacts with the data transfer and control section (the input and output circuits and address generators) by maintaining two tables, namely, the logical-to-physical mapping table and the memory attribute table. The memory attribute table contains information for avoiding failed sections of memory. For maximum data transfer speed, the microprocessor 30 is not directly involved with the data transfers but rather performs less time critical tasks of background processing. Microprocessor 30 communicates with the tables 38 via address and data lines 44 and 46, respectively and with arbiter 37 via line 45. The microprocessor 30 includes associated program ROM and working RAM. The information in the table 38 is created and maintained by the microprocessor in response to commanded self-test operations of the self-test circuit which identifies failed memory locations. Once a failure is diagnosed, the microprocessor updates the tables 38 to ensure that future memory operations are not affected by the memory failures. The microprocessor 30 also operates to control initialization of system control registers which govern the acquisition and computation of address information necessary to perform data transfers to the memory 10.

FIG. 2 illustrates the organization of the physical memory space of the memory 10. The memory is configured as seventy-two bits (9 bytes) wide by 8K (8192) blocks deep with each block being 4K (4096) deep. Each block therefore holds 4K seventy-two bit data words which are transmitted via the seventy-two bit data bus 12. In practice, sixty-four bits of the seventy-two bit word are employed for user data and eight bits are employed to store error detection and correction bits in accordance with Hamming code which is known in the art.

Failures within the memory are determined on a byte (8 bit) basis within each block. The memory is therefore illustrated as being configured such that each block is nine bytes wide. For illustration purposes, a failed byte 48 is illustrated in FIG. 2. The manner of masking this failed section in order to prevent its use in recording data will be described subsequently.

The logical-to-physical mapping employed in the present invention is illustrated in FIG. 3. The table 38 includes a translation table which maps logical blocks to physical blocks of the memory. The logical memory is divided into N partitions, each of which starts on a block boundary. Each partition is treated as a separate addressable memory. In FIG. 3, the logical blocks are mapped in order onto physical blocks, which is the case if there is no failed memory sections. That is, the logical block number and physical block number will correspond to one another.

In addition to the logical-to-physical block translation information, the table 38 includes "block attributes" of bytes to be skipped within a block and whether or not an alternate byte is to be employed for error detection and correction (EDAC), which is used in the event that the memory area normally employed for storing error detection and correction information itself fails. When there are no failed memory areas, there will be no skip information or alternate EDAC use for any of the blocks, as illustrated in FIG. 3.

When a memory section has been determined to be bad, the attribute information is updated and the logical-to-physical mapping is altered. This is illustrated in FIG. 4. When it is determined that a byte within a block has failed, such as the fourth byte within block 10 as illustrated at 48 in FIG. 2, the logical mapping is altered to move the block having a failed byte toward the end of the partition. Thus, FIG. 4 illustrates that the logical-to-physical mapping has been changed to map logical block 10 onto physical block 20 (the last physical block in partition 1) and map the logical block 20 onto the physical block 10. In this way, the physical block having failed memory area is moved to the end of the partition.

In addition to altering the logical-to-physical mapping, the skip attribute will be altered to indicate that logical block 20 will skip bytes 4 and 5 in order to avoid failed memory area. For ease of implementation, in the present embodiment, errors are detected on a byte basis but memory areas are removed two bytes at a time. It is for this reason that both the number 4 and 5 bytes are to be skipped even though a single byte in physical block 10 contains failed memory. In the event that a second byte within physical block 10 fails, the skip attribute is updated to indicate that byte 4 and the newly failed byte should be skipped.

The effect of skipping bytes is that the length of data words to be stored in memory are reduced from the nominal seventy-two bit data word length. Rather than avoiding entire seventy-two bit wide blocks when failed memory is detected, the present invention operates to remove small sections of the memory at a time by employing a variable data word length and, in effect, a flexible width data bus. When two bytes are skipped as illustrated in FIG. 4, the useful data word length to be stored in physical block 10 is reduced by two bytes from nine bytes (seventy-two bits) to seven bytes (fifty-six bits). This is accomplished by providing input words which are less than the overall data word length and selectively combining plural input words and EDAC information to form an overall data word. This is illustrated in more detail in FIG. 5.

Data is input to the recorder as logical or data words of sixteen bits each. To form a complete seventy-two bit data word for storage in the memory array, four input words and one EDAC byte are combined, as illustrated at 50, 52, 54 and 55 in FIG. 5. These data words are formed by the input portion of the input and output circuit 14 and transmitted along the data bus 12 for storage in memory 10. When various bytes of a block are not to be used due to detection of failed memory locations, those particular bytes of the in the memory array will be filled with dummy bits as discussed in detail subsequently. Data words of reduced length will be formed by the input portion of the input and output circuit 14, combined with the dummy bits and transmitted along appropriate lines of the bus 12 to the memory. Thus, at 58 in FIG. 5, the first byte of the input word 3 location and the EDAC byte are not to be used. The data word which is formed will therefore be fifty-six useful bits rather than seventy-two bits and will be formed by combining three input words and an EDAC byte. The combined information forms a data word of fifty-six bits which is transmitted along appropriate lines of the data bus 12 to avoid the two bytes which are indicated as not to be used (fill bits are provided for these bytes). Since the normal position for the EDAC byte is not to be used in data word 58, an alternate position in the input word 3 position is used in the case of the block illustrated at 58. This information is also contained in the attribute table which shows that the seventh byte is to be skipped and that the alternate EDAC byte is to be employed. In addition, the logical-to-physical block mapping indicates that physical block number 2 is to be mapped onto logical block number 1 in this example.

A similar situation exists with respect to the block 60 in which it is illustrated that the memory array location corresponding to input word number 2 is to be avoided. Again, a fifty-six bit data word will be formed by appropriately combining input words and an EDAC byte and transmitted on the appropriate lines of the data bus 12 along with fill bits corresponding to the area not to be used for the storage of user data. With respect to words to be stored in physical block 5 indicated at 62 in FIG. 5, four bytes are to be avoided in the memory array. Data words formed to be stored in that block will therefore have a total of forty useful bits. With respect to physical block 8190 indicated at 64 in FIG. 5, a total of six bytes are to be avoided, such that a single input word and the EDAC byte are to be employed, with a resultant data word length of twenty-four useful bits. This is the shortest data word length of useful bits to be employed.

FIG. 5 indicates the physical location of each data word at 66. Thus, for the example shown, physical block 0 will contain physical data word locations 0-4095, physical block 1 will contain data word locations 4096-8191, etc. Within a physical block, each data word will have the same length.

Referring to FIG. 6, the logical configuration of a partition will be described. The example shown in FIG. 6 employs blocks of eight locations deep (as opposed to 4K locations in the actual embodiment) for ease of discussion. Data is entered into the memory in groups of sixteen bit logical or input words referred to as frames. In FIG. 6, each frame is formed of seventeen input words of two bytes each. Each logical block has eight addresses, i.e., addresses for eight data words. The partition illustrated has fourteen frames. Frames are entered contiguous to one another such that data from two different frames may be combined to form a data word for storage in the memory, i.e., a frame may end in the middle of a data word.

In order to take advantage of the maximum data word length as much as possible, the logical-to-physical block mapping is arranged as shown in FIG. 6 such that logical blocks are ordered in accordance with increasing amount of failed memory locations and therefore decreasing useful data word length. In FIG. 6, logical blocks 3-6, i.e., the first four blocks in the current partition, have no memory locations to be skipped and the useful data word length is therefore the full seventy-two bits. Logical blocks 7, 8 and 9 each have two bytes which will be skipped and therefore have a fifty-six useful bit data word length and will include three input words per data word plus one EDAC byte. Logical block 10 is configured to skip four bytes, such that the data word length will include two input words and one EDAC byte for a total useful data word length of forty bits. Logical block numbers 11, 12 and 13 are formed of a single input word and an EDAC byte for a total useful data word length of twenty-four bits. As can be seen in FIG. 6, a single frame may cross one or more block boundaries.

In order to properly store and read out frames, it is necessary to provide the proper logical block address and the address within a block corresponding to the beginning of the frame. These addresses must be converted to physical addresses to actually access the memory 10.

Operation of the input portion of the input and output circuit 14 will be described with reference to FIGS. 7A-C. Data to be recorded in the memory 10 is received in serial fashion on data line 70 at an input interface ready circuit 72. The serial data is converted into sixteen bit input words by means of a shift register 74. The sixteen bit input word is latched into two eight bit latches 76 and 78. The data in each latch is sequentially applied to an input data bus 80 by means of a multiplexer 82 which receives a high/low byte select signal from a skipping logic section 84 on line 86. The two bytes supplied to the data bus 80 are directed to appropriate ones of a group of eight latches 88 via corresponding multiplexers 90. A data in signal from the skipping logic directs the bytes from the latches 76 and 78 to the appropriate latches 88 by means of a data in control signal. Subsequent input words formed at the shift register 74 are directed to appropriate ones of the latches 88 to form up to a sixty-four bit data word. The skipping logic 84 controls the loading of the latches based upon the attribute information, which is loaded into a latch 92 and provided to the circuit 84. Data will be prevented from being loaded into latches which correspond to failed data bus byte or memory byte locations. The latches 88 will thus contain a word of up to 64 bits formed by a combination of one or more input words. When data is being entered, each of the multiplexers 90 will be coupled to the input data bus 80 and the appropriate latch will be enabled for each byte by latch enable signals on lines 94.

The word stored in the latches 88 is provided to a masking buffer 96. Based upon attribute information from the latch 92, the masking buffer substitutes a known data pattern (e.g., all 1's) in failed byte locations, i.e., locations which did not have an input data byte entered into them. When a full system data word of sixty-four bits is assembled, including the failed data byte locations, the encoding of error detection and correction bits occurs by a check bits generator 98. The check bits generator employs the well known Hamming code to generate eight check bits which enable two errors to be detected and one error to be corrected when the data word is later read out of memory. The reason for using a known data pattern in the place of ambiguous data from the failed byte locations is so that a predictable error detection and correction encoding can be successfully performed. The check bits are entered into a latch 100 via a multiplexer 102. The latches 88 and the latch 100 therefore contain the overall data word to be stored in the memory 10 of up to seventy-two bits.

After the error detection and correction encoding is completed, a request for the data bus 12 is made to the bus arbiter 24 (FIG. 1) from the skipping logic 84 on a line 104. In addition, an extend cycle signal is output on line 107 when merging of data is required. Once the bus grant is made, an R/W signal on line 105 indicates whether a read from or write to memory is being done. For writing the up to sixty-four data bits plus eight error code bits equalling up to a seventy-two bit data word are then written into the main memory at the location specified by the input portion of the address generator 18. The granting of the bus by the bus arbitration circuit 24 is provided on line 106 to the skipping logic (followed by the R/W signal on line 105, extend cycle signal on line 107 of necessary, and latch signal on line 109), and the contents of the latches 88 and 100 are then provided to the bus 12 via output multiplexers 108. The multiplexers 108 are provided so that the input and output portions of the input and output circuits can share a common set of system data bus pins. A signal on line 111 controls whether input or output data is selected.

When the latch 92 contains information that the alternate EDAC byte is to be employed, a multiplexer 110 selects the EDAC byte so as to shift its position from its normal last byte of the data word to the next adjacent byte. In such a case, input data words are combined such that the alternate EDAC position (i.e., the eighth byte) is not employed for input data.

The input process is modified whenever the input data must be combined wit