A PROCESSOR TECHNICAL FIELD
The present invention relates to a processor executing queued execution tasks or jobs and in particular to the handling of tasks or jobos and to a device for changing jobs 5 in such a processor.
BACKGROUND OF THE INVENTION AND PRIOR ART
In telephone communication of today a computer is normally used at e.g. the connection place of subscriber lines. The computer handles the requests from the subscriber lines and when for example a subscriber wants to set up a connection to o another subscriber line, it can send commands relating to the connection set up, debiting for connection time, etc. In such a computer the actual instruction processing will be made in a multitude of short execution sequences for each separate step or task to be completed. Such an execution sequence can be called a job. For normal traffic conditions a very large number of such short sequences must be executed at each instant. Then it s naturally is very important that the execution of each job is done as fast as possible and also, that switches of or swapping between different jobs can be made very rapidly.
When a processor in a computer e.g. of the kind discussed above executes an execution task or job, it normally uses a number of registers for temporarily storing information, which is required later on in the execution, or information, which is to be o output after completing the execution. In many computer systems of today, all such registers are joined together to form one logical unit, called a register file memory. The contents of the registers included in a register file memory is in the same way taken as a single logical unit, called a register file. During the execution of a job information can be output from the processor and then information in the register file memory is 5 transferred to some external unit. After termination of a job the information stored in the register file memory is stored in some other memory and can be used as the output result of the execution or as a register file to be used when the same job is started again.
After terminating a job, a new job can be executed in the processor. Such a new job will most probably not use the same information which is currently stored in the 0 register file memory and is the information left from a current or previous job. Therefore, the information in the registers of the register file memory in such a computer system must be changed when a new job is to be executed in the processor. The initial information required for execution of the new job is usually available in some buffer memory and is loaded into the register file memory before starting to execute the new 5 job, i.e. the data stored in the register file memory have to be replaced when a new job is to be executed.
In applications such as telephone call processing described above, there are many jobs queued up waiting to be executed and the time for executing each job is relatively short or even very short. In such a case the time for changing the context or data in the
register file memory can become a substantial part of the time for executing a job.
Methods of reducing the time required for changing jobs have been disclosed in the prior art. Thus U.S. patent 4,367,530 discloses a control apparatus for an internal combustion engine. The control apparatus comprises an input/output unit including a first 5 register file memory for storing constants and data produced by a central processor unit and a second register file memory for storing signals indicative of conditions of the engine.
Furthermore, U.S. patent 4,980,819 describes a two unit pipelined processor having a separate register file memory in each unit. The two pipelined processors are o located on different chips and the register file memories of the two units are interconnected so as to share certain input data register stages to enable updating to take place within a minimum of time.
U.S. patent 5,357,617 discloses a hybrid pipelined processor for substantially concurrent processing of a plurality n of program instruction threads. The execution unit 5 of the processor includes n sets of register file memories, each of which contains the working contents for a corresponding one of the plurality n of instruction threads.
In the published International patent application WO 98/36355 a processor using context-switching or more particularly context-cycling is disclosed. Each context is fixed and has fixed registers associated with it, different data being stored in the fixed o registers. Furthermore, the processor context is switched after the execution of each instruction so that the same context cannot execute another instruction directly after an executed instruction. A special context, a timed context, is provided controlling the times when the other contexts are to execute instructions.
In the published European patent application 0 405 726 context switching is used in 5 a processor system for two registers which can be simultaneously or individually connected to the processor. The contexts have no priority levels. In the published Japanese patent application 10207717 two register file memories are used, at each instant one of the register file memories being active and connected to the processor and the other one receiving data from the exterior or delivering data to the exterior. o SUMMARY OF THE INVENTION
It is an object of the present invention to overcome or at least reduce delay problems associated with changes of jobs in a processor.
It is a further object of the present invention to provide a computer system, which is capable of significantly reducing the execution time for applications involving frequent 5 job changes.
The problem solved by the invention is thus how to make the changes of jobs in an electronic processing system as fast and seamless as possible and thus how to reduce the total processor time required for a job and thereby increase the efficiency of the processor.
Thus, in an electronic processor or electronic processing system separate, mutually independent, register file memories are used, each adapted to hold a register file to be used by the logic and calculation unit of the processor in executing jobs are provided. The jobs arrive to the processor and are processed and have one of at least two different 5 priority levels. When the logic and calculation unit uses the register file stored in one of the register file memories, a second, separate, register file is read from or loaded to another one of the register file memories, in the lattter case holding the information required for the execution of the next job. So many register file memories are provided that one individual register file memory can at each instant be assigned to each priority 0 level and that at least one extra, standby separate register file memory is provided which can be used for being loaded with a register file for job having the same priority level as that currently being executed.
Thus, when a job is finished and a next job having the same priority is to be executed, all that needs to be performed is to inform the processor that it shall use the s information loaded into the standby register file memory when executing the next job, and so on. In such a system no or little time has to be spent on changing the information in the register file memory when changing jobs.
By using register file memories in such a "pipelined" manner, a considerable amount of processing time is gained. This is particularly true in the case where jobs are o changed often, and where the jobs themselves are relatively short. This is for example true for a processor controlling a telephone switch or exchange. The extra register file memory is not primarily assigned to a definite priority level but can by a switching mechanism be made active and thus the register file memory for the priority level of the job to be executed. The former active register file memory will then be the standby one. 5 This makes the switching, loading and unloading of register file memories efficient with a reasonable amount of extra hardware.
The separate, individual register file memories, as proposed in the prior art, are not intended for jobs having the same priority or jobs having to be executed in a sequential order. They are instead intended for jobs of different program threads or for programs 0 processing very different types of data.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will now be described by way of non-limiting detailed embodiments with reference to the accompanying drawings, in which:
- Fig. 1 is a block diagram of a portion of a telephone network near a subscriber end, 5 - Fig. 2 is a schematic diagram of an electronic processor having two separate register files,
- Figs. 3a and 3b are diagrams illustrating the change of jobs and the time required therefor in the electronic processor of Fig. 2,
- Fig. 4 is a schematic diagram of an electronic processor executing jobs of two priority
levels,
- Fig. 5 is a diagram of a state machine for loading new jobs to an execution unit of the electronic processor of Fig. 4, and
- Fig. 6 is a diagram of a state machine for unloading jobs from an execution unit of the 5 electronic processor of Fig. 4.
DESCRIPTION OF PREFERRED EMBODIMENTS
A portion of a telephone network is schematically illustrated in Fig. 1. A subscriber symbolized by the telephone set 1 is connected to the network through a line board 3, the line board having terminals for a plurality a subscriber connections. There is also a o plurality of line boards 3. A group of line boards 3 is directly controlled by a regional processor 5 which senses the control signals from the subscriber set 3. The operation of the regional processor is controlled by a regional processor handler 7 which prepares information of jobs to be executed and also sends commands to the regional processor handlers. The information of the jobs are delivered to a queue called the job memory 9 5 in a signal processing unit 11. From the job memory 9 the job information is sent through the signal processing unit 11, as administered by a job scheduler 13, to an instruction processing unit 15 which comprises a general purpose processor or computer, here called program execution unit or instruction processing circuit 25, executing the jobs. The information of a job contains information on the program sequence to be o executed and the data to be used during the execution. The program sequence, i.e. the sequence of instructions to be executed, are taken from a program memory 17 and the data to be used can be found in the information of the job but also in a data memory 19. In the processing of instructions new data can be produced and they are transferred to a regional processor 5 through the job scheduler 13 and an output register 21 in the signal 5 processing unit 11. The regional processor 5 responds to received data and e.g. sets up a connection of a call through an exchange or switch 23 to another links and exchanges of the network and finally to another subscriber.
The structure of the signal processing unit 11 and the relevant part of the instruction processing unit 15, called the program execution unit 25, is illustrated in Fig. 0 2. The execution unit 25 is the central processing unit (CPU) 1 executing instructions as read sequentially from the program memory 17 and operating on data, such data e.g. being stored in the data memory 19. The job scheduler 13 contains a simple processor which operates according to a fixed microprogram and basically independently of or asynchronously of the processing made in the execution unit 25 and e.g. handles 5 information associated with jobs in the job memory 9.
The part of the execution unit 25 actually executing the instructions is an arithmetic and logic unit, ALU 27 having in the conventional way two input registers 29, 31. Each of the input registers 29, 31 receives data from the instruction stream, from the data memory 19 and from other registers arranged inside the execution unit 25, these other
registers being collected in one of two register file memories 33, 35. The register file memories 33, 35 are arranged in parallel to each other. Only one of them is used by the ALU 27 at each instant as selected by a multiplexer 37 and from the selected register file memory thus data can be transferred to the input registers 29, 31. 5 The instructions to be executed by the ALU 27 are in the conventional way contained in or divided in longer sequences, called programs located in blocks in the program memory 17. A program can be started and then in the execution of the instructions contained therein use some input data obtained from the data memory 19 and also data from a register file, which thus when starting the execution of the program, is ιo stored in the register file memory 33 or 35 used by the ALU 27 during the execution of exactly this program. For the start of a program a start address in the actual block is required, the start address indicating that instruction in the sequence of instructions in the program, which will be executed first. The same program can in the general case be started using different register files and different start addresses. is The system as illustrated in Fig. 2 receives commands or signals from the regional processor handler 7, see Fig. 1, informing on the programs to be executed together with some input data to be used by the execution unit. Each such command or signal requiring the program execution unit 25 to execute some special task is said to start or set up a job or task and therefor it stores in the job memory 9 information of the
2o program to be executed, the start address of the program block, some job identification number and data to be used as a register file. For a new job thus the information of the job is written in the job memory 9 at the first empty position in the queue, the job memory thus holding a queue being the FIFO type.
When a job is terminated the ALU 27 issues a signal indicating this state on a line
25 39 to the job scheduler 13. If there is another job in the queue in the job memory 9 it will next be executed. The job scheduler 35 has then already loaded the register file of the next job in that one of the two register file memories 33, 35 which is in not active and is called the standby register file memory. The job scheduler then sends a signal changing the switch 37 to the former standby register file memory, which is already
30 loaded with the register file for the new job. For the loading of the register file the job scheduler 13 controls the setting of another switch 41 in the program execution unit 25. This loading was then made during the processing of the former job, this procedure saving time during the switching of jobs. The job scheduler 13 unloads the used register file containing processed data from the former active register file memory into a memory
35 21 from which the data are transferred to the regional processor handler and the regional processor. A program can also send data during the execution thereof. Then it issues a signal on a line 43 to the job scheduler which then copies the contents of the active register file memory to the output memory 21 where it is accessed by the regional processor handler.
The saving of time associated with using an additional or extra "standby" register file memory is illustrated by the diagrams of Figs. 3a and 3b. In Fig. 3a the case of having only one register file memory is illustrated. A small time period is always required between two jobs and thus the process of Fig. 3a starts with such a period, 5 called "Switching procedure between jobs" . Then there is a time period for loading the register file, here called "Read data of a new job" . Thereupon the relevant program can be executed, "Execution of a job". The job is terminated and then there is a time period required for unloading the register file, "Read data from register file". Then there is a new period for starting a new job, "Switching procedure between jobs" . The procedure o then continues in the same way.
In Fig. 3b instead, the loading and unloading of data is made during program execution, i.e. the time periods "Read data of a new job" and "Read data from register file" occur during the program execution periods, "Execution of a job" . For the case of having short program sequences each requiring a short time, there will obviously be s significant time saved compared to the case depicted in Fig. 3a. The saving of time will obviously be high if the time needed for loading and unloading jobs is significant in relation to the time required for processing of each job, but will be smaller if the loading and unloading times are small.
In the general case a system of the kind as described herein uses different priority o levels. Thus a job having a higher priority level will always be executed before a job having a lower priority level. In Fig. 4 a processing system using two priority levels is schematically illustrated, jobs having priority level 1 being processed before jobs having priority level 2. Jobs having a lower priority may be interrupted in the case where a job having a higher priority is to be executed. The signal processing unit 11 and the program 5 execution unit 25 are then modified. The job memory 9 holds two queues, one queue for jobs of priority level 1 and one queue for jobs of priority level 2, each queue being the FIFO type as above. The queuing of jobs incoming to the signal processing unit 11 from the regional processor handlers 7 and of other possible jobs to be placed in the job memory 9 are handled by a queue handler 10 taking out the priority of a job and placing 0 the job at the end of the respective queue. Three register file memories 33, 34, 35 are arranged operating in parallel to each other, one register file memory always holding the active register file used by the program currently being executed. Another register file memory contains the job information of the next job having a priority level different from that which is currently executed. A third one of the register file memories is the 5 standby one, which can be loaded and unloaded during the execution. The assignment of the register file memories to for instance the priority levels will then change when processing a sequence of jobs. The switch 37 is modified to be a 1 :3 switch, so that the ALU 27 can use the selected one of the register file memories 33, 34, 35. Two parallel switches 41, 41 are arranged for transferring job data from and to the register file
memories, each such switch also being a 1:3 switch.
The switching or swapping between programs or jobs will in this case be much more complicated. For instance, as has already been mentioned, a program which has a low priority level and is executed can be temporarily stopped when another program
5 being more urgent or important has to be executed, this other program then having a higher priority level.
A change of the job which is being executed occurs in following cases:
- The job is terminated or finished in a regular way. Such a termination of a job may be arranged by entering a special instruction in the sequence of instructions of the program o being executed, such an instruction for example being called End of Program, EP. When executing this instruction, the ALU 27 issues some signal indicating this state to the job scheduler 13. If there is another job in the queue in the job memory 9 storing the jobs belonging to the same priority class it will next be executed and then a switch to the standby register file memory 33 - 35 is made. Otherwise the first job stored in the queue 5 for the next lower priority class will be executed.
- A job belonging to a higher priority class is entered from the exterior in the job buffer and its register file has been loaded to the current standby register file memory 33 - 35. The job scheduler then issues an interrupt signal to the ALU 27 on a line 45. The instruction sequence being executed is then stopped at the next possible breaking point o and the ALU sets the switch 37 to the standby register file memory.
The job scheduler 13 loads and unloads the register file memories 33 - 35. The change of active register file memory is performed by the ALU 27 as symbolized by the block 47 "Register file memory control".
The first steps of setting up a connection from the subscriber's telephone set 1 will 5 now be described. First a subscriber is assumed to lift the handset of the telephone 1 generating a hook-off signal in the line board 3. This signal is transmitted through the regional processor 5 and the regional processor handler 7 to form an information packet or job, such a job containing Information and Header fields and a data field. The Information and Header fields contain information on the event occurred, i.e. hook-off in 0 this case. The data field contains identification data of the input terminal of the line board 3, to which the calling subscriber is connected, and of the respective line board 3, regional processor 5 and regional processor handler 7. Furthermore, the Information and Header fields have information for example setting the priority of the job to priority level 2. Directly after setting up this job the regional processor handler 7 normally sets up 5 another job associated with some new event, such as detecting that the telephone set of another subscriber has entered the state of hook-off, that numbers have been dialled at some telephone set or that some telephone set has gone into the state of hook-on.
The job associated with a new call to be set up as described above is received by the queue handler 10 and placed in the last position in the portion of the job memory
arranged for jobs of priority level 2. After some time no more jobs of priority level 1 are left and possibly after some more time this job will be the first in the queue for priority level 2. The job scheduler 13 then first checks the contents of a register 51 "Trying to take new job" in the program execution unit 25 for an indication that a new 5 job can be loaded. It waits until the indication is positive, and then it checks that there is a register file memory 33 - 35 which can receive a new job. If there is no such memory, it waits until there is one. Then the program scheduler accesses the job in the job memory, extracts the contents of the fields Information and Header and places them in a memory 53 called "Info-Header In" where they are available to the ALU 27. Finally it ιo extracts the data of the job from the data field thereof and places them in that one of the register file memories 33 - 35 which is ready to receive a register file for a new job, this register file memory being called the standby one. After finishing the loading of the register file an indicator is set in a register 55 "New job" telling that there is a new job which is ready to be executed and that its register file is loaded.
15 When in the instruction flow executed by the ALU 27 next an instruction is found signalling the end of the program the ALU performs a sequence of steps found in the micro instructions corresponding to said instruction. These steps are symbolized by the block 47, "Register file memory control" . Then first the indicator stored in the block 51, "Trying to take new job" is set to a state signalling to the job scheduler 13 that no
2o loading or unloading of register file memories must now on be performed. Then the contents of the "Info-Header In" memory 53 is accessed and in particular the event identification. By a table look-up the actual program block and start address are found and transmitted to the device handling the instruction flow, not shown. The priority level of the new job is copied to a register 57 "Priority level" in the program execution unit
25 25. Then the swap of the switch 37 to the standby register file memory is made, the number of this memory being found in a list 61. Then the rest of the contents of the memory 53 "Info-Header In" of the new job is checked. Finally, the contents of some of the registers are changed, i.e. the contents of register 55 "New job" is set to indicate that there is no more job ready, the contents of a register 59, "Job taken" is set to indicate
30 that the job the register file of which is in the standby register file memory is now started to be executed, the contents of the register 51 "Trying to take new job" are changed to indicate that there is now activity of the ALU 27 associated with the start of the new job and thus the job scheduler 11 can load or unload the register file memories 33 - 35 as required. The microinstructions of the block 47 are then terminated and the
35 ALU 27 continues to execute the instructions as taken from the program block using the start address as found earlier.
The program now executed will first identify the subscriber by using the data of the register file. It is then checked that the subscriber is allowed to make a call. The next expected event is receiving the numbers of a called another subscriber. Therefor the
program is first terminated and simultaneously a new job is made which is to prepare for the reception of dialled numbers.
In the termination process thus a new job is set up. A sequence of microinstructions initiated by a single program instruction is performed. First it is checked whether the job 5 scheduler 11 has already used the information in a memory area 63 called "Info-Header Out" to send the result of a former job to either the output register 21 or to put a new job in the job memory 9. The job scheduler 11 sets a state indicator for such a sending operation in a register 65 called "Busy" . If the contents of the register "Busy" indicate that the information has been used, information and header for the new job are stored in o the memory 63 "Info-Header Out" . This information contains an indication of the program to be started, i.e. its block number and its start address, and the priority level, which is one step higher than the present job being terminated, i.e. priority level 1. Information of the new program to be started is found by looking up in a table stored in the data memory 19, the input to the table being e.g. a number of the program currently s being executed. In the register file memory for priority level 2, the memory 35 as illustrated in Fig. 4, there is still stored the data identifying the calling subscriber. Finally the state of an indicator stored in a register 67 "Job signal complete" is set to indicate to the job scheduler 11 that the memory 63 "Info-Header Out" and the register file memory for the present job contain information belonging to a new job or o information to be sent to external devices, i.e. to the regional processor handler. Then the microinstruction sequence is finished and the ALU 27 will try to take a new job as described above.
The job scheduler 11 recognizes the state of indicator in the register 67 "Job signal complete", sets the indicator in the register 65 "Busy" to indicate the unloading state and 5 starts to take care of the information in the memory area 63 "Info-Header Out" . It decodes some of this information to find whether it is information directed to external devices or a new job. Here it finds that a new job will be started. It then accesses the priority level of the new job and loads the new job to the appropriate queue, in this case the queue for priority level 1, copies the contents of the memory 3 "Info-Header Out" 0 and of the correct register file memory, here 35, to the job memory 9, in the last position of the queue. Finally the indicators in the registers 67 "Job signal complete" and 65 "Busy" are changed. This portion of the job scheduler 11, which can be an independently operating state machine, then starts testing the indicator in the register 67 "Job signal complete" whether there is new information to be received from the program 5 execution unit 25.
The new job will in some time be executed by the ALU 27. It will then take the identifier of the subscriber slot from the associated register file and reserve a temporary memory area in the data memory 19. It places there data of the subscriber which can be required in the further processing of the call. The address of the temporary memory area
is also stored in the currently used program block in the program memory 17. This program generally also contains instructions for handling telephone numbers. The address of the temporary memory area is stored at a position in this block which is fixed for the subscriber connected to the terminal of the line board, to which the subscriber is 5 connected. The program is then terminated and no new job is set up and no data is sent to external devices.
The subscriber then dials the number to which a connection is desired and then a new job will be created by the regional processor handler, this job containing the numbers dialled by the subscriber. This new job can have the lower priority and will be o processed by instructions of the same block as the former job preparing for the number reception but using another start address. Then the address of the temporary memory area in the data memory 19 is taken from the memory position in the block corresponding to the number of the subscriber slot. The dialled number is checked for validity by using e.g. table look-ups in the data memory 19. An order for set-up of the s call can then be given to the regional processor handler by sending data to the external buffer 21.
The different events and the corresponding jobs for a connection to be made and being made can be said to belong to the same "forlopp". The events and the processing of jobs belonging to one "forlopp" are independent of the events of the processing of o jobs belonging to another "forlopp" , considering that in the job processing some steps having a higher priority will always be executed before steps having a lower priority, independently of the "forlopp" to which they belong. Anyway, the events of different "forlopps" of course occur quite asynchronously of each other. The processing of jobs belonging to one "forlopp" can then be interleaved with jobs belonging to other 5 "forlopps" . The order of executing the jobs are determined only by the times when they are stored in the input queue 9 and by the priority of the jobs.
When executing instruction of a job having a lower priority the execution can be interrupted by a job having a higher priority. The ALU 27 will then receive an interrupt signal on the line 45 and save information in order to be capable of restarting the current 0 job. Then it starts the procedure as above of trying to take new job. The job scheduler makes a new job of the interrupted one and in particular creates the fields Info and Header and places the job first in the respective queue, in this case in the queue for priority level 2. The information in the Info-Header fields then tells that an interrupted job has its register file stored in the register file memory for this priority level. 5 The register file memory control 47 uses the list in registers 61 and sets the contents thereof when changing jobs. Three registers are used, one for each priority level, i.e one register for priority 1 and one for priority 2, and a third register telling which register file memory is the standby one and holds the standby register file. The registers are updated when swapping to a new register file memory to be used by the
program execution unit.
The procedure executed by the job scheduler 11 in loading data for a new job to the standby register file memory is illustrated by the state machine diagram of Fig. 5. The state machine is mostly in an idle state 501. In this state the contents of the indicator 5 in the register 69 "Job read out complete" is constantly checked whether it has been set. This indicator signals that all data and information from a former job have been read out to either the output buffer 21 or to form a new job stored in a queue in the job memory 9. When this indicator has been set, the state 503 is taken. In this state it is constantly checked whether there is a new job in the job memory 9. When a new job is detected, o the state 505 is entered. There first the indicator in 67 just checked is reset and the indicator in register 65 "Busy" is set. The first job of the highest priority level is read and the respective fields are loaded to the memory 53 "Info-Header In" and to the standby register file memory as indicated by the indicator in 61. Then the state 507 is taken and there the indicator in 65 "Busy" is reset, the indicator in 55 "New job" is set. s This state 507 is maintained until the indicator in 59 "Job taken" is set or a new job has been received by the job memory 9 having a priority higher than that of the job preloaded in 53 "Info-Header In" and the standby register file memory. In the first case the idling state 501 is taken again. In the second case the job having a higher priority is to be loaded. Thus a state 509 is entered in which the indicator in 65 "Busy" is set and o the indicator 55 "New job" is reset. The fields of the new job are loaded as above in state 505. Finally the indicator in 55 "Busy" is reset and an interrupt signal is sent to the ALU 27 on line 45. Then the idling state 501 is entered again.
Another procedure executed by the job scheduler 11 is illustrated by the state machine diagram of Fig. 6. This procedure takes data from the standby register file 5 memory and the memory area 63 "Info-Header Out" and transfers them to the output buffer. The state machine is mostly in an idling state 601. In this state the contents of the indicator in the register 67 "Job signal complete" is constantly checked whether it is set. When it is set, a state 603 is taken. Here the appropriate portion of the memory area 63 signalling whether the output information is a new job or data to be communicated to 0 external devices. In the first case the state 605 is taken. There the priority of the new job is determined by reading the appropriate portion of the output memory 63 "Info-Header Out" . Then the contents of the memory 63 and the standby register file are copied to the last place in the queue for this priority in the job memory 9. In the second case a state 607 is taken in which the contents of the standby register file memory are copied to the 5 output buffer 21. Finally, after completing the operations in states 605 and 607 a state 609 is entered, in which the indicator in 67 "Job signal complete" is reset. After this state the idling state 601 is again taken.
Owing to the required high speed of processing the jobs, most of the functions illustrated in Figs. 2 and 4 are implemented in hardware, so that a minimum of register
polling and microprogram execution is performed. The system as depicted in Fig. 4 will in the general case handle a plurality of priority levels and also external interrupts requiring that jobs are executed immediately, as fast as their associated register file is loaded. Such external interrupts can have their own priority levels, which are all higher than the ordinary priority levels illustrated in Fig. 4. The operation of the job scheduler will then be much more complicated since there will be more stops of current executed programs and loading and reloading of the register file memories.