1. Technical Field
The present invention relates to a system and method for testing a large memory area during processor design verification and validation. More particularly, the present invention relates to a system and method for replicating a memory block throughout a main memory and modifying real addresses within a translation lookaside buffer (TLB) to reference the replicated memory blocks during test case set re-executions in order to fully test the main memory.
2. Description of the Related Art
Processor testing tools exist whose goal is to generate the most stressful test case for a processor. In theory, the generated test case should provide maximum test coverage and should be interesting enough to stress various timing scenarios on the processor. The whole technology of these tools sits in the logic of building these test cases.
Verifying and validating a processor using test cases typically includes three stages, which are 1) test case build stage, 2) test case execution stage, and 3) a validation and verification stage. A challenge found is that with an increasing demand for memory, processors reside on boards that include a large amount of memory. In test applications, however, a typical test case at any time only accesses a couple of pages of memory. As a result, a large number of test cases are required to cover large memory areas, which requires a large amount of build time.
What is needed, therefore, is a system and method for efficiently testing a large memory area.
It has been discovered that the aforementioned challenges are resolved using a system and method for replicating a memory block throughout a main memory and modifying real addresses within a translation lookaside buffer (TLB) to reference the replicated memory blocks during test case set re-executions in order to fully test the main memory. A test case generator generates a test case set (multiple test cases) along with an initial TLB that includes real addresses that reference an initial memory block. A test case executor modifies the real addresses after each test case set re-execution in order for a processor to test each replicated memory block included in the main memory.
A test case generator allocates a fixed memory block size (e.g., 64 KB) and builds a test case set that is biased toward memory access instructions that access an initial memory block whose size equals the allocated fixed memory block size. The test case set includes an initial address translation table, such as a translation lookaside buffer (TLB), which translates virtual addresses to real addresses that reference the initial memory block within the main memory. The test case generator then replicates the initial memory block throughout the main memory.
A test case executor receives the test case set from the test case generator, and schedules the test case set using the initial address translation table. In turn, the test case executor dispatches the test case set, which includes the initial translation table, to a processor. The processor executes the test case set, which tests the initial memory block located in the main memory. When finished, the processor sends hardware results to a results comparator, which evaluates the results and sends a pass or fail message to the scheduler.
When the hardware results pass, the scheduler uses a TLB modifier to modify the TLB real addresses in order to reference the next memory block (replicated memory block). In turn, the scheduler provides the test case set, along with the modified address translation table, to the dispatcher, which dispatches the test case set to the processor. The processor executes the test case set, which tests the next memory block, and passes hardware results to the results comparator.
The test case executor proceeds to modify the address translation table “n” times and dispatch the test case set with the modified translation tables “n” times in order to fully test each memory block included in the main memory. As a result, the test case generator generates one test case set in order to fully test the main memory.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention, which is defined in the claims following the description.
Test case generator 100 operates in a user mode and allocates a fixed memory block size (e.g., 64 KB) to build a test case set to test main memory 160. Test case generator 100 then builds a test case set that is biased toward memory access instructions that access an initial memory block whose size equals the allocated fixed memory block size. Test case set 110 includes an initial address translation table, such as a translation lookaside buffer (TLB), which translates virtual addresses to real addresses that reference the initial memory block within main memory 160. Test case generator 100 then replicates the initial memory block such that the replicated memory blocks cover main memory 160.
In one embodiment, test case set 110 includes a test case that includes a plurality of sub test cases, each of which includes a set of instructions that are organized in a particular instruction order. For example, a test case may include a first sub test case and a second sub test case. The first sub test case may include five instructions that are organized in a particular instruction order, and the second sub test case may include ten instructions that are organized in a particular instruction order. In this embodiment, test case generator 100 allocates processor resource sets to each individual sub test case, and selects instructions to insert into the sub test case based upon the resources allocated to the particular sub test case. In turn, the instructions are shuffled during each test case re-execution (see
Test case executor 120 operates in a kernel/privilege mode, and receives test case set 110 from test case generator 100. Scheduler 130 schedules the test case set using the initial address translation table. In turn, dispatcher 140 dispatches the test case set (TLB 1) to processor 150. Processor 150 executes the test case set, which tests the initial memory block (block A) located in main memory 160. When finished, processor 150 sends hardware results to results comparator 170. Results comparator 170 evaluates the results and sends a pass or fail message to scheduler 130.
When the hardware results pass, scheduler 130 uses TLB modifier 135 to modify the real addresses included in the address translation table. TLB modifier 135 modifies the real address to reference the next memory block (replicated memory block) included in main memory 160. In turn, scheduler 130 provides the test case set, with the modified address translation table (TLB 2) to dispatcher 140, which dispatches the test case set to processor 150. Processor 150 executes the test case set, which tests the next memory block (block B) included in main memory 160. Processor 150 then passes hardware results to results comparator 170, which evaluates the results and sends a pass or fail message to scheduler 130.
Test case executor 120 proceeds to modify the address translation table “n” times and dispatch the test case set with the modified translation tables “n” times in order to fully test each memory block included in main memory 160. As can be seen, test case generator 100 generated one test case set for use in fully testing main memory 160.
At step 340, processing loads initial address translations, which reference the initial memory block, into a translation lookaside buffer (TLB). Next, processing executes the test case set at 350 using the TLB that includes the initial address translations.
Once a processor executes the test case set, which tests the initial memory block included in the main memory, a determination is made as to whether the test case set passed (decision 360). If the test case set did not pass, decision 360 branches to “No” branch 362 whereupon processing generates an error at step 365, and ends at 370.
On the other hand, if the test case set passed, decision 360 branches to “Yes” branch 368, whereupon a determination is made as to whether the test case set has executed “n” times to fully test each replicated memory block within the main memory area (decision 380). If the test case set has not executed “n” times, decision 380 branches to “No” branch 382 whereupon processing patches the TLB real address to reference the next memory block in the main memory area (step 385), and executes the test case using the patched TLB. This looping continues until the test case set has executed “n” times, at which point decision 380 branches to “Yes” branch 388 whereupon processing ends at 390.
Since multiple memory blocks cover main memory 400, a test case executor re-executes the test case set and changes real addresses in a TLB, which references the replicated memory blocks one at a time, after each execution in order to test each of blocks 0410 through n 440 using the same test case set.
A determination is made as to whether processing received multiple test cases (decision 520). If processing received multiple test cases, decision 520 branches to “Yes” branch 522 whereupon processing selects one of the test cases at step 525. On the other hand, if processing did not receive multiple test cases, decision 520 branches to “No” branch 528, bypassing test case selection step 525.
At step 530, processing schedules and dispatches the test case to processor 150. Processor 150 executes the test case and provides results, which are received at step 540. A determination is made as to whether the results pass (decision 550). If the results do not pass, decision 552 branches to “No” branch 555 whereupon processing generates an error message at step 555, and ends at 560.
On the other hand, if the results pass, decision 550 branches to “Yes” branch 558, whereupon a determination is made as to whether to shuffle the selected test case (decision 570). For example, processing may shuffle the selected test case twenty times in order to provide processor 150 with twenty different test case scenarios.
If processing should shuffle the selected test case, decision 570 branches to “Yes” branch 572, which loops back to shuffle the test case in accordance with the invention described herein (pre-defined process block 575, see
A determination is made as to whether to select a different test case if test case generator 100 provided multiple test cases (decision 580). If processing should select a different test case, decision 580 branches to “Yes” branch 582, which loops back to select, shuffle, and process the different test case. This looping continues until each test case has been selected and sufficiently shuffled, at which point decision 580 branches to “No” branch 588 whereupon processing ends at 590.
A determination is made as to whether there are any sub streams that are valid (decision 630). If there are not any sub streams that are valid, decision 630 branches to “No” branch 632 whereupon processing returns at 635. On the other hand, if there are any valid sub streams, decision 630 branches to “Yes” branch 638 whereupon a determination is made as to whether there is more than one valid sub stream still valid (decision 640). If there is not more than one valid sub stream still valid, decision 640 branches to “No” branch 642 whereupon processing copies the rest of the instructions in the valid sub stream to the shuffled test case (step 645), and returns at 650.
On the other hand, if there is more than one valid sub stream, which is typically the case at the beginning of the shuffling process, decision 640 branches to “Yes” branch 648 whereupon processing randomly selects one of the valid sub streams at step 660. At step 665, processing picks the instruction corresponding to the selected sub stream's pointer location and, at step 670, processing appends the picked instruction to the shuffled test case.
A determination is made as to whether there are any instructions left in the currently selected sub stream (decision 680). If there are not any instructions left in the selected sub stream, decision 680 branches to “No” branch 682 whereupon processing marks the selected sub stream invalid (step 685). On the other hand, if there are instructions left in the current sub stream, decision 680 branches to “Yes” branch 688 whereupon processing increments the selected sub stream's pointer at step 690, and loops back to continue to shuffle instructions. This continues until each of the instructions in each of the sub streams are appended to the test case, at which point processing returns at 650.
Control plane 710 includes processing unit 720 which runs operating system (OS) 725. For example, processing unit 720 may be a Power PC core that is embedded in BEA 700 and OS 725 may be a Linux operating system. Processing unit 720 manages a common memory map table for BEA 700. The memory map table corresponds to memory locations included in BEA 700, such as L2 memory 730 as well as non-private memory included in data plane 740.
Data plane 740 includes Synergistic processing element's (SPE) 745, 750, and 755. Each SPE is used to process data information and each SPE may have different instruction sets. For example, BEA 700 may be used in a wireless communications system and each SPE may be responsible for separate processing tasks, such as modulation, chip rate processing, encoding, and network interfacing. In another example, each SPE may have identical instruction sets and may be used in parallel to perform operations benefiting from parallel processes. Each SPE includes a synergistic processing unit (SPU) which is a processing core, such as a digital signal processor, a microcontroller, a microprocessor, or a combination of these cores.
SPE 745, 750, and 755 are connected to processor element bus 760, which passes information between control plane 710, data plane 740, and input/output 770. Bus 760 is an on-chip coherent multi-processor bus that passes information between I/O 770, control plane 710, and data plane 740. Input/output 770 includes flexible input-output logic which dynamically assigns interface pins to input output controllers based upon peripheral devices that are connected to BEA 700.
In one embodiment, the SPEs process data under the control of PU 810. The SPEs may be, for example, digital signal processing cores, microprocessor cores, micro controller cores, etc., or a combination of the above cores. In one embodiment, each one of the local stores is a storage area associated with a particular SPU. Each SPU can configure its local store as a private storage area, a shared storage area, or an SPU's local store may be partly private and partly shared.
For example, if an SPU requires a substantial amount of local memory, the SPU may allocate 100% of its local store to private memory accessible only by that SPU. If, on the other hand, an SPU requires a minimal amount of local memory, the SPU may allocate 10% of its local store to private memory and the remaining 90% to shared memory. The shared memory is accessible by PU 810 and by the other SPEs. An SPU may reserve part of its local store in order for the SPU to have fast, guaranteed access to some memory when performing tasks that require such fast access. The SPU may also reserve some of its local store as private when processing sensitive data, as is the case, for example, when the SPU is performing encryption/decryption.
The MMUs are responsible for transferring data between an SPU's local store and the system memory. In one embodiment, an MMU includes a direct memory access (DMA) controller configured to perform this function.
Each SPE may be set up to perform a different task, and accordingly, in one embodiment, each SPE may be accessed using different instruction sets. If BEA 805 is being used in a wireless communications system, for example, each SPE may be responsible for separate processing tasks, such as modulation, chip rate processing, encoding, network interfacing, etc. In another embodiment, each SPE may have identical instruction sets and may be used in parallel to perform operations benefiting from parallel processes.
The shared portion of the SPEs' local stores may be accessed by PU 810 as well as by the other SPEs by mapping each shared region to system memory 820. In one embodiment, PU 810 manages the memory map for the common system memory 820. The memory map table may include PU 810's L2 Cache 815, system memory 820, as well as the SPEs' shared local stores.
A portion of system memory 820 as shown is occupied by the operating system (OS 825). System Memory 825 also contains data 840, which represents data to be processed by SPU 810 as well as by the SPEs. In one embodiment, a process executing on the PU receives a request for a task involving the processing of large data. The PU first determines an optimum method for performing the task as well as an optimum placement of the data in common system memory 820. The PU may then initiate a transfer of the data to be processed from disk 835 to system memory 820. In one embodiment, the PU arranges the data in system memory 825 in data blocks the size of the registers of the SPEs. In one embodiment, the SPEs may have 128 registers, each register being 128 bits long.
The PU then searches for available SPEs and assigns blocks of data to any available SPEs for processing of the data. The SPEs can access the common system memory (through a DMA command, for example) transfer the data to the SPEs' local store, and perform the assigned operations. After processing the data, the SPEs may transfer the data (using DMA again, for example) back to common system memory 820. This procedure may be repeated as SPEs become available until all the data blocks have been processed.
PCI bus 914 provides an interface for a variety of devices that are shared by host processor(s) 900 and Service Processor 916 including, for example, flash memory 918. PCI-to-ISA bridge 935 provides bus control to handle transfers between PCI bus 914 and ISA bus 940, universal serial bus (USB) functionality 945, power management functionality 955, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 920 is attached to ISA Bus 940. Service Processor 916 includes JTAG and I2C busses 922 for communication with processor(s) 900 during initialization steps. JTAG/I2C busses 922 are also coupled to L2 cache 904, Host-to-PCI bridge 906, and main memory 908 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 916 also has access to system power resources for powering down information handling device 901.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 962, serial interface 964, keyboard interface 968, and mouse interface 970 coupled to ISA bus 940. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 940.
In order to attach computer system 901 to another computer system to copy files over a network, LAN card 930 is coupled to PCI bus 910. Similarly, to connect computer system 901 to an ISP to connect to the Internet using a telephone line connection, modem 975 is connected to serial port 964 and PCI-to-ISA Bridge 935.
While
One of the preferred implementations of the invention is a client application, namely, a set of instructions (program code) in a code module that may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, in a hard disk drive, or in a removable memory such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive). Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.
Number | Name | Date | Kind |
---|---|---|---|
4800486 | Horst | Jan 1989 | A |
4910663 | Bailey | Mar 1990 | A |
5133061 | Melton et al. | Jul 1992 | A |
5182811 | Sakamura | Jan 1993 | A |
5202889 | Aharon | Apr 1993 | A |
5216672 | Tatosian et al. | Jun 1993 | A |
5218703 | Fleck et al. | Jun 1993 | A |
5331643 | Smith | Jul 1994 | A |
5396619 | Walton | Mar 1995 | A |
5426750 | Becker et al. | Jun 1995 | A |
5469443 | Saxena | Nov 1995 | A |
5488573 | Brown | Jan 1996 | A |
5584013 | Cheong et al. | Dec 1996 | A |
5701495 | Arndt et al. | Dec 1997 | A |
5761408 | Kolawa | Jun 1998 | A |
5784550 | Brockmann et al. | Jul 1998 | A |
5784606 | Hoy et al. | Jul 1998 | A |
5784698 | Brady et al. | Jul 1998 | A |
5815696 | Tanaka et al. | Sep 1998 | A |
5822578 | Frank et al. | Oct 1998 | A |
5996097 | Evans et al. | Nov 1999 | A |
6006028 | Aharon et al. | Dec 1999 | A |
6014756 | Dottling et al. | Jan 2000 | A |
6019501 | Okazaki | Feb 2000 | A |
6070220 | Katayama | May 2000 | A |
6157980 | Arimilli et al. | Dec 2000 | A |
6167479 | Hartnett et al. | Dec 2000 | A |
6212613 | Belair | Apr 2001 | B1 |
6223271 | Cepulis | Apr 2001 | B1 |
6223337 | Blume | Apr 2001 | B1 |
6226716 | Bauman et al. | May 2001 | B1 |
6253338 | Smolders | Jun 2001 | B1 |
6286116 | Bhavsar | Sep 2001 | B1 |
6367042 | Phan | Apr 2002 | B1 |
6381715 | Bauman et al. | Apr 2002 | B1 |
6609216 | Almy et al. | Aug 2003 | B1 |
6662297 | Boom et al. | Dec 2003 | B1 |
6675338 | Golshan | Jan 2004 | B1 |
6684359 | Noy | Jan 2004 | B2 |
6694461 | Treuer | Feb 2004 | B1 |
6701461 | Oura | Mar 2004 | B2 |
6735746 | Thompson et al. | May 2004 | B2 |
6865501 | Huisman et al. | Mar 2005 | B2 |
6920416 | Swoboda et al. | Jul 2005 | B1 |
6950771 | Fan et al. | Sep 2005 | B1 |
6968428 | Maly et al. | Nov 2005 | B2 |
6993685 | Ramaswamy | Jan 2006 | B2 |
7010734 | Brahme | Mar 2006 | B2 |
7020854 | Killian et al. | Mar 2006 | B2 |
7058909 | Lu | Jun 2006 | B2 |
7073106 | Paredes et al. | Jul 2006 | B2 |
7111287 | Garvey | Sep 2006 | B2 |
7133816 | Adir | Nov 2006 | B2 |
7222179 | Srivastava et al. | May 2007 | B2 |
7240243 | Decker | Jul 2007 | B2 |
7356436 | Bohizic et al. | Apr 2008 | B2 |
7373446 | Post et al. | May 2008 | B2 |
7536694 | Blinick et al. | May 2009 | B2 |
7669083 | Arora et al. | Feb 2010 | B2 |
7752499 | Choudhury et al. | Jul 2010 | B2 |
7797650 | Bag et al. | Sep 2010 | B2 |
7831979 | Whalen | Nov 2010 | B2 |
20010007970 | Kohno et al. | Jul 2001 | A1 |
20040143720 | Mansell et al. | Jul 2004 | A1 |
20040143819 | Cheng et al. | Jul 2004 | A1 |
20050159925 | Gedamu | Jul 2005 | A1 |
20050204231 | Mukherjee et al. | Sep 2005 | A1 |
20050210452 | Dimpsey et al. | Sep 2005 | A1 |
20050278702 | Koyfman et al. | Dec 2005 | A1 |
20060101181 | Post et al. | May 2006 | A1 |
20060149952 | Blinick et al. | Jul 2006 | A1 |
20060161897 | Biberstein et al. | Jul 2006 | A1 |
20060195573 | Srivastava et al. | Aug 2006 | A1 |
20060212756 | Emek et al. | Sep 2006 | A1 |
20060224863 | Lovett et al. | Oct 2006 | A1 |
20090070643 | Anvekar et al. | Mar 2009 | A1 |
20090300441 | Andreev et al. | Dec 2009 | A1 |
Number | Date | Country |
---|---|---|
2000020341 | Jan 2000 | JP |
0440765 | Jun 2001 | TW |
Number | Date | Country | |
---|---|---|---|
20090070643 A1 | Mar 2009 | US |