this invention relates to the architecture of a master controller that is disposed inside of a memory subsystem . the architecture according to the preferred embodiment of the invention enables the self test and self repair of the memory subsystem . therefore , it enables the simplification of the external rram interface and the speeding up of the rram repair process . the preferred embodiments of the architecture support the parallel test execution scheme . the architecture preferably enables the reduction of the overall test duration by a factor of several times . the architecture is applied to the rram module in the embodiments specifically described herein , but it can also be applied to any system that consists of one master controller and several slave controllers . with reference now to fig1 , the master controller 12 , as the term is used herein , is the controller of the rram system unit of the integrated circuit 10 . it preferably supports communication with rram components , performs different test operations , and directs repair operations . the master controller 12 preferably interacts with the external fuses 16 and soft rom 18 modules . the master controller 12 preferably receives external commands through the rramstaticin port 20 , and return results through the testrramout port 22 . each of the rram controllers 24 can preferably execute different types of tests . the master controller 12 preferably loads test input parameters into each of the rram controllers 24 , starts execution of the tests , and obtains results of the test execution from the rram controllers 24 . the test duration preferably depends on the specific rram controller 24 that performs the test , and on the type of test being performed . during execution of the tests , the master controller 12 preferably monitors the test statuses as received from of all of the rram controllers 24 . when one or more of the rram controllers 24 finish execution of a test , the master controller 12 preferably starts new tests on the rram controllers 24 , without interrupting the test process of the other rram controllers 24 that have not finished their test routines . the master controller 12 preferably stores the test results in an inner flare memory 26 . every test is preferably associated with some designated portion or memory location of the flare memory 26 . the master controller 12 preferably includes a simple processor that performs high level commands and generates control sequences for the rram controllers 24 . the programming for the internal processor is preferably stored in the program rom 28 . the processor and any additional control logic are preferably placed in the main control unit 14 . communication between the master controller 12 and the rram controllers 24 is preferably accomplished with the rram communication subsystem 30 . the master controller 12 preferably stores the current test environment for each rram controller 24 . the master controller is preferably enabled to switch between different rram environments in order to communicate with different rram controllers 24 . during the execution of the tests , the master controller 12 preferably switches rapidly from one rram environment to another , checks the test completion , and starts a new test if necessary . the rram environment preferably consists of two main parts . the first part is the static environment . it preferably includes information about the duration of the tests for the given rram , and some specific rram properties . the static environment is preferably unchangeable . the second part is the dynamic environment . the dynamic environment preferably includes parameters of the current test . during test execution , the master controller 12 preferably changes the dynamic environment for every new test . the static environment is preferably stored in the param rom 32 . for each rram controller 24 , the param rom 32 preferably contains a line with a description of all of the static information for the rram . the param rom 32 , program rom 28 , and soft rom 18 are preferably general roms . the dynamic environment is preferably stored in the parammaster module 34 . this module 34 preferably provides read and write access to the environment . the master controller 12 preferably finishes the test execution after the expiration of a period of time that is equal to the test duration , which test duration is preferably stored in the param rom 32 . a timer module 36 preferably stores information about the current time , such as from the beginning of parallel test execution , and generates signals about time expiration of the current test for the given rram environment . the flare module 26 preferably includes a set of registers with associated logic for implementation of a simple memory interface . fig2 presents an annotated list of flare ports for one embodiment . the fuses module 16 preferably includes a chain of fuse elements . each fuse element can store a value of zero or one . the chain preferably supports a scanning operation and an operation of loading fuses with default values . fig3 presents an annotated list of preferred fuses ports . the parammaster module 34 preferably includes a set of registers with associated logic for simple memory interface realization . fig4 presents an annotated list of preferred parammaster ports . the timer module 36 is depicted in greater detail in fig5 . the timer module 36 preferably includes an inner register 38 that is preferably incremented on every clock cycle . if the value of resettimer 40 on the input port is one , then the register 38 is preferably set to zero . to reduce module complexity , preferably only the high bits of the register 38 are used in the calculations as described below . thus , the high bits of the register 38 are preferably output to the time port 42 . the timelimit input port 44 preferably represents the expected duration of the current test . the rramtime input port 46 preferably represents the test start time . therefore , the sum of these two values preferably represents the expected finish test time . the testlimitcase output port 48 preferably indicates when the current time is greater then the expected test finish time . most preferably , if the time 42 is greater than the timelimit 44 plus the rramtime 46 , then the limitcase 48 is defined to be one . the core module of the main control unit 14 is the processor module 50 , as depicted in fig6 . the processor module 50 preferably produces a flow of commands for four dependent modules , which are the transind 52 , the transflare 54 , the transrram 56 , and the transconf 58 . the transconf module 58 is preferably intended to accomplish rram configuration and repair . the transrram module , depicted in greater detail in fig7 , is preferably an intermediate module between the processor 50 and the rram controllers 24 . the transrram module 56 preferably receives commands 60 from the processor 50 and produces rram commands 62 . the transrram module 56 preferably performs several types of commands , as given below : 1 ) the set - test - type command preferably selects the type of test to be performed . an index of the selected test type is preferably output to the testtype port 64 . 2 ) the set - rram - ind command preferably selects the appropriate rram controller 24 for further communication . the selected index is preferably output to the rramind port 66 3 ) the do - rram - test command preferably starts the selected test on the selected rram controller 24 . 4 ) the inc - rram - ind command preferably increments the current index of the selected rram controller 24 . 5 ) the get - result command preferably generates rram controller 24 commands for passing the results of the completed test to the result port 68 . the transind module 52 , depicted in greater detail in fig8 , preferably controls the communication between the processor 50 and the parammaster module 34 and the timer module 36 . the transind module 52 preferably performs several types of commands , as given in more detail below : 1 ) the reset - timer command preferably passes the resettimer signal 40 to the timer module 36 . 2 ) the update - time command preferably sets the value of rramtime 70 to the current value of the time 42 . 3 ) the set - test - index command preferably selects the index of the test to be executed . the set - rramactive command preferably sets the value of the rramactive flag 72 . the selected rram controller 24 preferably takes part in the overall process of the parallel test execution if and only if rramactive 72 equals one . the transflare module 54 , depicted in greater detail in fig9 , preferably enables communication between the processor 50 and the flare module 26 , the fuses 16 , and soft rom 18 , and outputs the results 68 . the transflare module 54 preferably performs the commands as given below : 1 ) the read - flare command preferably reads the value of the flare memory 26 and saves it in an inner register . 2 ) the write - flare command preferably writes the value of the inner register into the flare module 26 . 3 ) the load - fuses command preferably loads the default values into the fuses 16 . 4 ) the read - fuses command preferably reads the value of the fuses 16 and saves it in the inner register . 5 ) the write - fuses command preferably writes the value of the inner register into the fuses 16 . 6 ) the scan - fuses command preferably scans the fuses chain 16 . 7 ) the read - soft - rom command preferably reads the value of the soft rom module 18 and saves it in the inner register . 8 ) the read - result command preferably reads the value of the result input 68 and saves it in the inner register . 9 ) the output - result command preferably passes the value of the inner register to the testrramout port 22 . 10 ) the get - flare command preferably outputs the flare module 26 contents to the testrramout port 22 . there is next given a description of one embodiment of a parallel rram test execution process 100 , as given in fig1 , considering the overall algorithm of the parallel test execution , and using the architecture described above . step 101 : the processor 50 produces the set - test - type command . the transrram 56 performs the command and sets its testtype output 64 to the proper value . step 102 : the processor 50 produces the reset - timer command . the transind module 52 performs the command and sets the resettimer output 40 to one . the timer module 36 sets its time register 38 to zero . step 103 : the processor 50 generates the set - rram - index ( 0 ) command . the transrram module 56 sets the rramindex 66 to zero . step 104 : the processor 50 produces the set - test - index ( 0 ) command . the transind module 52 sets the testindex value 71 to zero and sets the we value 74 to one . the parammaster module 34 saves this value of testindex 71 for the current rram controller 24 . step 105 : the processor 50 generates the set - rram - active ( 1 ) command . the transind module 52 sets the value of the rramactive 72 to one and sets the we value 74 to one . the parammaster module 34 saves the new value of rramactive 72 . step 106 : the processor 50 generates the updatetime command . the transind module 52 updates the value of the rramtime port 46 and sets the we value 74 to one . the parammaster module 34 saves the new value of the rramtime 46 . step 107 : the processor 50 generates the do - rram - test command . the transrram module 56 produces a rram controller 24 command sequence for starting the selected test on the selected rram controller 24 . step 108 : the processor 50 analyzes the current value of rramindex 78 . if it is less then the biggest possible value , then the processor 50 generates the inc - rram - index command and returns to step 104 . the transrram module 56 performs this command and increments the value of the rramindex 66 . otherwise , the processor 50 goes to step 109 . step 109 : the processor 50 generates the set - rram - index ( 0 ) command . the transrram module 56 sets the rramindex 66 to zero . step 110 : the processor 50 checks the rramactive value 80 . if the rramactive value 80 equals zero , then the selected rram controller 24 has already finished execution of all of the tests , and should be omitted . in this case , the processor 50 goes to step 118 . otherwise , it goes to step 111 . step 111 : the processor 50 checks the limitcase value 48 . if the limitcase value 48 equals one , then the selected rram controller 24 has already finished execution of the current test . if the limitcase value 48 equals zero , then the processor 50 goes to step 118 . otherwise , it goes to step 112 . step 112 : the processor 50 generates the get - result command . the transrram module 56 performs the command and generates the rram command sequence 62 for retrieving the result 68 from the rram controller 24 . step 113 : the processor 50 sequentially generates the read - result and the write - flare commands . the transflare module 54 performs the commands and saves the test result 68 to the flare memory 26 . step 114 : the processor 50 compares the testindex value 82 and the maxtestindex value 84 from the param rom 32 . if the testindex value 82 equals the maxtestindex value 84 , then all of the tests for the given rram controller 24 are finished . if so , then the processor 50 increments the number of the rram controllers 24 that have finished their test execution , generates the set - rram - active ( 0 ) command , and goes to step 118 . the transind module 52 sets the value of the rramactive 72 to zero , and sets the we value 74 to one . the parammaster module 34 saves the new value of the rramactive 72 . step 115 : the processor 50 produces the inc - test - index command . the transind module 52 increments the testindex value 71 and sets the we value 74 to one . the parammaster module 34 saves the new value of the testindex 71 for the current rram controller 24 . step 116 : the processor 50 generates the update - time command . the transind module 52 updates the value of the rramtime port 70 and sets the we value 74 to one . the parammaster module 34 saves the new value of the rramtime 70 . step 117 : the processor 50 produces the do - rram - test command . the transrram module 56 produces a rram controller 24 command sequence for starting the selected test on the rram controller 24 with index zero . step 118 : the processor 50 analyzes the current value of the rramindex 78 . if it is less then the biggest possible value , then the processor 50 generates the inc - rram - index command and returns to step 110 . the transrram module 56 performs this command and increments the value of the rramindex 66 . otherwise , the processor 50 goes to step 119 . step 119 : the processor 50 checks the number of rram controllers 24 that have finished their test executions . if some of the rram controllers 24 are still working , then the processor 50 goes to step 109 , else it goes to step 120 . step 120 : the processor 50 generates the get - flare command . the transflare module 54 performs the command and outputs the flare 26 contents to the testrramout port 22 . the foregoing description of preferred embodiments for this invention has been presented for purposes of illustration and description . it is not intended to be exhaustive or to limit the invention to the precise form disclosed . obvious modifications or variations are possible in light of the above teachings . the embodiments are chosen and described in an effort to provide the best illustrations of the principles of the invention and its practical application , and to thereby enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated . all such modifications and variations are within the scope of the invention as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly , legally , and equitably entitled .