Method for computer-assisted operation of a memory unit and execution of application programs with memory checking for memory errors
11876533 ยท 2024-01-16
Assignee
Inventors
Cpc classification
H03M13/611
ELECTRICITY
International classification
H03M13/00
ELECTRICITY
Abstract
In a method for computer-assisted operation of a memory unit, encoded data is saved in the memory unit. The data is retrieved and decoded after retrieval. The memory unit is monitored for errors in that a temporal sequence of computer-assisted checking operations is carried out for the memory unit. For first-time encoding of the data, each required application data set is generated or selected, containing check data segments. For each application data set, the check data segment is occupied by count data, which characterizes the checking operation being implemented. After retrieving and decoding the application data sets, an error is determined when the count data characterizes neither the checking operation being implemented nor the most recent completely implemented checking operation. The check data segment of the relevant application data set is occupied by count data, which characterizes the checking operation being implemented, if no error was determined.
Claims
1. A method for computer-assisted operation of a memory unit, the method comprising: saving data in the memory unit and encoding the data prior to saving; retrieving the data from the memory unit and decoding the data after retrieval; monitoring the memory unit for errors by carrying out a temporal sequence of computer-assisted checking operations for the memory unit; for a first-time encoding of the data: generating or selecting at least one application data set containing a data segment having application data for an application program and a check data segment; writing count data that characterize a checking operation being implemented to the check data segment of each of the at least one application data set; and encoding and saving each of the at least one application data set; for checking the data in the checking operation being implemented, after retrieving and decoding the at least one application data set: determining an error for the at least one application data set when the count data characterizes neither the checking operation being implemented nor a most recent completely implemented checking operation; when no error was determined, occupying writing the count data that characterize the checking operation being implemented to the check data segment of the at least one application data set; and encoding and saving the at least one application data set if no error was determined.
2. The method according to claim 1, which comprises defining a start value for the count data before a first-time implementation of the checking operation.
3. The method according to claim 1, wherein the checking operation includes at least a checking of all application data sets available at a beginning of the checking operation for an ongoing method.
4. The method according to claim 1, which comprises, as soon as a checking operation has been completed, writing a count element to the count data that follows the count element for a previous occupation of the count data.
5. A method for computer-assisted execution of an application program, the method comprising: operating the memory unit by the method according to claim 1 and retrieving application data sets required for an execution from the memory unit and decoding the application data sets; after decoding the application data sets, executing the application program; and encoding and saving in the memory unit at least the application data sets, which include data segments that were changed or generated by the execution of the application program.
6. The method according to claim 5, which comprises, when checking the data after decoding of the application data sets and before execution of the application program, respectively: determining an error for an application data set when the count data characterizes neither the checking operation being implemented nor a most recent completely implemented checking operation; executing the application program if no error has been determined.
7. The method according to claim 5, which further comprises, during the computer-assisted operation of the memory unit, for the first-time encoding of the data: generating, or selecting from a supply of possible diversity characteristic data, at least one group of application data sets, containing data segments having identical application data for an application program and check data segments having different diversity characteristic data; encoding and saving each application data set; retrieving the data by retrieving and decoding the application data sets, and saving the data by encoding and saving the application data sets; and/or during the computer-assisted execution, executing the application program multiple times in redundant computing instances, wherein in order to execute required application data sets, each application data set of an encoded group of application data sets is retrieved from the memory unit and decoded, wherein: in order to check the data after the decoding of the application data sets, an error is determined respectively for an application data set if the diversity characteristic data in the application data set deviates from all possible diversity characteristic data of the computing instance from the supply; executing the application program with the data segments of each application data set of a relevant group if no error was determined; and/or encoding and saving in the memory unit at least those application data sets that include data segments that were changed or generated by the execution of the application program.
8. The method according to claim 5, which comprises, before encoding, creating the check data segment such that the check data segment also has redundant memory space with predefined redundancy data.
9. The method according to claim 5, wherein the data segments consist of data words.
10. The method according to claim 5, which comprises carrying out the method with simultaneous use of at least two processors or processing cores.
11. The method according to claim 10, wherein the at least two processors or processing cores have shared access to the memory unit.
12. The method according to claim 5, which comprises: with multiply stored identical data segments and/or with multiply identical changed data segments, carrying out a voting process; and when an error is identified by the voting process, excluding from further processing those application data sets that contain data segments causative of the error identification.
13. The method according to claim 12, which comprises: updating the application data sets, which contain data segments causative of errors with error-free data segments of the corresponding application data sets; incorporating updated application data sets in further processing.
14. A computer program product having program commands for carrying out the method according to claim 1.
15. An apparatus for providing a computer program product, comprising a memory device for saving and/or providing a computer program product with program commands in non-transitory form for carrying out the method according to claim 1.
Description
BRIEF DESCRIPTION OF THE FIGURES
(1)
(2)
(3)
(4)
(5)
DETAILED DESCRIPTION OF THE INVENTION
(6)
(7) The computing environment RU can have various host computers HR1, HR2, HR3 among which applications in the form of application programs for controlling the railroad application are distributed (more on this below). The first host computer HR1 is made available by a computing center RZ and is connected to a first memory unit SE1 by a first interface S1. The computing center RZ can be operated, for example, by a service provider of the rail operator or by the rail operator themselves. The first host computer HR1 is connected to a Cloud CLD by a second interface S2. Accordingly, this computer is not locally connected to the railroad application.
(8) A control center LZ of the rail operator accommodates the second host computer HR2, which is likewise connected to the Cloud CLD by a third interface S3. In addition, the second host computer HR2 is connected to a second memory unit SE2 by a fourth interface S4.
(9) The computing environment RU also has, by way of example, an interlocking STW (interlocking station, signal box, switch tower), which accommodates the third host computer HR3, which is connected to a third memory unit SE3 by a sixth interface S6. In addition, the third host computer HR3 has a fifth interface S5 to the second host computer HR2. The host computer HR3 can also be connected to the Cloud CLD. The third host computer HR3 also has a seventh interface S7 to the switch drive WA, an eighth interface S8 to the controller CL and a ninth interface S9 to the balise BL.
(10) All interfaces S1 . . . S9 in
(11)
(12) Program complexes generally combine a number of application programs whose joint execution can be combined with a view to all of the applications. In particular, it can be provided that all application programs contained in one data set are combined to form one program complex. This takes account of the fact that with regard to the data being applied, the data set brings about combining of data segments while parallel herewith a program complex combines the corresponding application programs to which the data segments are assigned.
(13) Configuration data KD1 . . . KD13 should be taken to mean data, which configures application programs for the individual demands of the individual application at hand. The configuration defines the interaction of different application programs among themselves and the function of the application programs on the hardware components on which they are installed. In addition, the configuration contains adjustments to the individual application at hand for which the relevant application program is intended (for example parameters, which can be differentiated in different individual applications).
(14) On the basis of the fifth application program AP5 it is also shown that this can be implemented by individual subprograms. The subprograms of the fifth application program AP5 are a gateway GW, a voter VT, a clock TG and a message broker MB (more on this below). This should be understood merely as an example, however. Alternatively, the clock could run, for example, in a different application while the remaining subprograms run, as described, in the application program AP5.
(15) Within the meaning of the invention, subprograms can, in general, be taken to mean smaller units such as program modules, the entirety of which produce the application program. It is thus advantageously possible to form application programs modularly, in other words, to provide, for example, program modules, which are used in a plurality of application programs. The subprograms can be configured with different configuration data, depending on their use. Subprograms thus make it possible to be able to create application programs more easily and therewith be able to adjust the computing environment more easily to an individual application.
(16) In connection with the creation of program complexes, application programs and subprograms it should be noted that configuration data respectively can be assigned to the program complexes, the application programs and the subprograms respectively. Multiple storing of particular data with the same content can occur in this case, with this respectively producing data segments, which can, in turn, be uniquely assigned to a program complex, application programs or subprograms. The possibility of unique assignment in order to have available uniquely addressable data segments for implementing test functions is important here.
(17) The fifth application program AP5 is identically organized in all program complexes PK1 . . . PK4. Messages can be exchanged with the Cloud CLD via the gateway GW. The gateway GW thus embodies the interfaces S2 and S3 of
(18) In
(19) The program complexes can be provided, for example, for a particular task complex. For example, a program complex can be used for actuation of a particular railroad component (signal, interlocking, switch, axle counter, etc.). Generally a plurality of application programs is necessary for actuation of these railroad components. In particular, application program AP5 (already explained above) is also required to guarantee safe execution of the application and communication with other host computers. This should be referred to as a service program, which serves to safeguard the function of the host computer and therewith executes an application relevant to the host computer (in contrast to the useful data for application programs AP1 . . . AP4 processing railroad components, which are thus referred to as utility programs). The application program AP5 likewise runs in at least one computing instance RP9 . . . RP12 per host computer, although preferably not redundantly.
(20) Within the meaning of the invention, a large number of redundant computing instances is taken to mean a software implementation on the host computers HR1 . . . HR3, which allow parallel, in other words, simultaneous execution of application programs AP1 . . . AP4, preferably within the respective program complex PK1 . . . PK4.
(21) The first application program AP1 is executed redundantly, therefore simultaneously in parallel, in the first redundant computing instance RP1, . . . and the nth redundant computing instance RPn. This is an application program, which undertakes a task for the railroad application of
(22) Configuration data KD1 . . . KD13 is also available for all other program complexes PK1 . . . PK4, application programs AP1 . . . AP4 and subprograms MB, TG, VT, GW. Accordingly, the configuration data KD1 . . . KD13 contains the data necessary for the program complexes, application programs and subprograms respectively, so they can undertake the tasks assigned to them in the relevant individual application. The configuration data is constant respectively and can therefore be stored in a data segment with known start and known end. Similarly, all program complexes PK1 . . . PK4, application programs AP1 . . . AP4 and subprograms TG, VT, GW, MB are stored as data segments having known start and known end. For example, the first memory unit SE1, the second memory unit SE2 and the third memory unit SE3 of
(23) Data which changes during the execution of programs is exchanged between the participating partners as messages. As already mentioned, the message broker MB is available for this. In addition, the individual host computers HR1, HR2 communicate among themselves via the external interfaces S2, S3, for example by means of a Cloud CLD, so data can also be exchanged between different program complexes PK1 . . . PK4 of different host computers. After modification of the data, the data is saved in the first memory unit SE1, the second memory unit SE2 or the third memory unit SE3 again. Errors in the data can also occur during processing, which errors will be referred to more precisely as processing errors within the framework of this invention.
(24) The sequences in the railroad application of
(25) So the calculation results are simultaneously available for voting by the voter VT, the processes are clocked in the first redundant computing instance RP1 and in the second redundant computing instance RP2 by the clock TG. This makes clock signals available via the tenth interface S10, and these can likewise be retrieved by the first redundant computing instance RP1 and the second redundant computing instance RP2 via the message broker MB.
(26) The illustrated manner of executing tasks by the first application program AP1 and the second application program AP2 is ensured by the fifth application program AP5. The fifth application program AP5 is therefore an internal application program, which supports the functioning of the host computers HR1 . . . HR3. This makes it clear that application programs have to be made available not only for the application of the railroad application of
(27) The combination of application programs to form program complexes and the division of application programs into subprograms facilitates the compiling of application programs and the checking of the execution of tasks for freedom from errors in this connection. For this purpose, data is combined to form data segments, which can be uniquely identified and addressed as such respectively (by way of definition of a start of the data segment and an end of the data segment). As already mentioned, subprograms, application programs, program complexes and the respectively associated configuration data (with these usually comprising a large number of data segments) are defined in data segments. Here the necessary data is preferably stored several times using the diversity characteristic data, so the data segments and configuration files can be uniquely assigned respectively. In other words, the situation where different application programs, if they use identical configuration data, access the same memory location for this data does not occur in this case. Instead they always access the data segment assigned to them respectively in which the data is available.
(28)
(29) For example applications AP for carrying out application programs can be stored in the memory units SE1, SE2. Furthermore, it is possible to store count data ZD and a supply VR of diversity characteristic data DD1 . . . DD4. To use the application data AD for applications within the meaning of the invention, in other words, to inventively carry out a method for computer-assisted execution of an application program, the application data AD has to be stored in the form of application data sets ADS, which are created by means of the method of
(30)
(31) Furthermore, the diversity of the diversity characteristic data DD1. . . DD4 is indicated by hatched areas, and this is intended to make it clear that application data sets ADS can be characterized by the diversity characteristic data from the supply VR. As shown by the supply VR, a lengthwise hatching, a cross hatching and two instances of oblique hatching are available, which are at an angle of 90 to each other. The application data set ADS represented in detail in
(32) As the application data set ADS, which is represented in enlarged form, shows, it consists of one data segment DA for the application data AD and one check data segment PA, which has the first diversity characteristic data DD1, a count element in the count data ZD and redundancy data RD. The first diversity characteristic data DD1, the count data ZD, the redundancy data RD, which is occupied by a start value, and the application data AD are written in the host computer HR1, for example into a random-access memory, and are combined to form the application data set ADS. The application data set ADS is subsequently encoded and written into the first memory unit SE1, with the diversity on the basis of the first diversity characteristic data DD1 also being indicated in the memory unit SE1 by said hatching. The application data set ADS is available for further processing here.
(33)
(34) The application data sets ADS are now executed in three computing instances RP1, RP2, RPn (in the explained example n is equal to 3 but could also have a different value). For this purpose, the application data sets ADS are read into the computing instance respectively. One particular diversity respectively is assigned to the computing instances RP1, RP2, RPn, and this is represented by hatching accordingly. This hatching corresponds to that of the diversity characteristic data DD1 . . . DD3 of the supply VR respectively.
(35) It can also be seen that a computing instance RPn can also process data from two diversities, in the present case the application data sets ADS characterized by the diversity characteristic data DD3 and the diversity characteristic data DD4. Optimum utilization of the computing capacity made available by the computing instance RPN can be achieved hereby.
(36) The computing instances RP1 . . . RPn read out the application data sets ADS of the correct diversity respectively. This is achieved by service programs, which run in the background, so the computing instances RP1 . . . RPn are automatically supplied with the correct application data sets ADS. This is represented in more detail for the application data set ADS of
(37) Once this application data set ADS has been retrieved it is firstly decoded in order to subsequently be read. By way of the decoding, the first diversity characteristic data DD1, the current count data ZD and the redundancy data RD together with the application data AD can be read out and service programs applied, which identify storage errors that have potentially occurred. It is possible to check whether the diversity characteristic data DD1 originates from the supply VR and/or matches the diversity of the first computing instance RP1. Using the count data ZD it is possible to check the proper course of checking operations since it has to characterize the checking operation currently taking place or the checking operation that previously took place. Only if the test shows that the data does not have any storage errors is it released for reading RE and processed by the first computing instance RP1.
(38) After processing of the application data set ADS, the first computing instance RP1 writes the data set back into the first memory unit SE1. The check data segment, the first diversity characteristic data DD1, the count data ZD and the redundancy data RD can also be checked here in order to identify potential processing errors in the processing of the application data set ADS. In addition, the count data ZD is equated with the count element, which characterizes the checking operation that is currently running. The application data set ADS is subsequently encoded and written into the first memory unit SE1.
(39) Even if it is not represented in detail, this method is likewise carried out for the further application data sets in the computing instances RP2, RPn. After successful processing of the application data sets ADS, voting can additionally be carried out for the application data AD to determine that the application data sets AD were identically changed also after processing by the computing instances RP1 . . . RPn. If this is not the case, then this points to a processing error. With three computing instances RP1 . . . RPn, a majority voting can be carried out, moreover, so the application data, which is identical for the most part, is used for further processing while the application data, which differs from it, is blocked for further processing.
(40) One possible sequence for the method for computer-assisted operation of a memory unit and for computer-assisted execution of an application program shall be explained with reference to
(41) Firstly the method for carrying out the checking operation shall be explained. A start value is defined for the count data in a determining step for the count data DTM_ZD. This count data, in an output step for count data ZD_OT, if needed, is made available to the method for execution of an application program via an input step for count data ZD_IN.
(42) The actual checking operation consists of repeating procedures, which is carried out for all application data sets that are stored in the memory unit (represented on the right-hand side in
(43) The application data set is decoded in a decoding step for the application data set DEC_ADS. It is checked in a checking step for the count data TST_ZD whether the count element matches the checking operation currently being checked or the last checking operation. It is checked in a checking operation for the diversity characteristic data TST_DD whether the application data set has diversity characteristic data, which matches the available supply VT of diversity characteristic data (cf.
(44) Once all checking steps have been carried out, a query step checks for deviations DVG? whether one of the checking steps, as described above, has caused deviations from the anticipated result. If this is the case, an error is output in an output step for errors ER_OT (more on this below). If this is not the case, the checked application data set is encoded again in an encoding step for the application data set COD_ADS, with this data set always being encoded in the count data with the count element of the current checking operation. Once the checking operation has been carried out for all application data sets, they thus have the current count element in the count data, and the count data can be updated in an updating step for the count data UPD_ZD for the service program that is currently running to the extent that this data now includes the count element of the checking operation which will subsequently begin.
(45) In the method for computer-assisted execution of an application program (left-hand side in
(46) The special feature is that the application is carried out on a computing instance having a particular diversity, so the diversity characteristic data checked in the checking step for the diversity characteristic data TSD_DT must exactly match the diversity of the computing instance on which the application program is to be carried out.
(47) During execution of the application program too, for each required application data set it is checked in the checking step for deviations DVG? whether the checking steps TST . . . have identified deviations from the anticipated contents of the application data sets. If this is the case, as already explained, an error is output in the output step for errors ERR_OT. Otherwise, checking of the application data sets is continued until all application data sets necessary for the application program have been checked. It is only under this precondition that the application program is executed in an execution step for the application program RUN_APP.
(48) The application data sets can preferably be checked step-by-step for the application program (not represented in
(49) After the execution step for the application program RUN_APP, it is checked whether the application data sets that exist after the execution of the application program are new application data sets. This check (called query step of new application data set NW_ADS?) is necessary so in a determining step for a check data segment DTM_PA, new application data sets are assigned checking data, which makes subsequent checking of the application data set ADS in the further steps of the presented method possible. In each case, the new application data set or also the old application data sets are encoded again in the encoding step for application data sets COD_ADS and stored in the memory unit. A further application program or, as described above, a further step of an ongoing application program can be subsequently carried out (repetition of ZD_IN, input step for count data and the subsequent steps).
(50) A plurality of application programs can also be executed simultaneously in redundant computing instances. In this case, the sequence for carrying out application programs would be represented multiple times next to one another in parallel, which is not represented here.
(51) The implementation step for the application program RUN_APP can also achieve results which should be output. Before this occurs, a test procedure can optionally likewise be run through, represented in the center of
(52) For the case where an error is output in an output step for an error ERR_OT, the method is stopped immediately in the exemplary embodiment of
(53) The following is a summary list of reference numerals and the corresponding structure used in the above description of the invention:
(54) LZ control center
(55) STW interlocking
(56) RZ computing center
(57) GL rail
(58) WH switch
(59) WA switch drive
(60) LS light signal
(61) CL controller for light signal
(62) BL balise
(63) RU computing environment
(64) HR1 . . . HR3 host computer
(65) SE1 . . . SE3 memory unit
(66) S1 . . . S14 interface
(67) CLD Cloud
(68) RP1 . . . RP8 RPn redundant computing instance
(69) AP1 . . . AP5 application program
(70) PK1 . . . PK4 program complex
(71) KD1 . . . KD13 configuration data
(72) MB message broker
(73) TG clock
(74) VT voter
(75) GW gateway
(76) KN node
(77) DD1 . . . DD4 diversity characteristic data
(78) ZD count data
(79) RD redundancy data
(80) AD application data
(81) DA data segment with application data
(82) PA check data segment
(83) ADS application data set
(84) CDS encoded application data set
(85) GR group
(86) VR supply
(87) COD encoding
(88) DEC decoding
(89) RE reading
(90) WT writing
(91) DTM_ZD determining step for count data
(92) UPD_ZD updating step for count data
(93) DEC_ADS decoding step for application data set
(94) COD_ADS encoding step for application data set
(95) TST_ZD checking step for count data
(96) TST_DD checking step for diversity characteristic data
(97) TST_RD checking step for redundancy data
(98) DVG? query step for deviations
(99) ERR_OT output step for errors
(100) INI initialization step
(101) RUN_APP execution step of application program
(102) ZD_IN input step for count data
(103) ZD_OT output step for count data
(104) OT_RS output step for result
(105) NW_ADS? query step of new application data set
(106) DTM_PA determining step