Methods and device for ensuring correct pre-decoding

FIELD: information technology.

SUBSTANCE: method involves defining a granule which is equal to the smallest length instruction in the instruction set and defining the number of granules making up the longest length instruction in the instruction denoted MAX. The method also involves determining the end of an embedded data segment, when a program is compiled or assembled into the instruction string and inserting a padding of length MAX-1 into the instruction string to the end of the embedded data. Upon pre-decoding of the padded instruction string, a pre-decoder maintains synchronisation with the instructions in the padded instruction string even if embedded data are randomly encoded to resemble an existing instruction in the variable length instruction set.

EFFECT: ensuring reconstruction during repeated synchronisation owing to reduced errors of synchronising the mechanism for pre-decoding the instruction string.

20 cl, 11 dwg

 

The technical field to which the invention relates.

The present invention generally relates to eliminate synchronization errors pre-decoding processor in the pipeline that processes the command, having different lengths, and more specifically to the preferred methods for isolating code from the condition that the mechanism of pre-decode correctly defines the commands of variable length as a team during the pre-decoding the command line, including the embedded data.

The level of technology

Today's processors typically support sets of commands, which are commands of variable length. For example, the instruction set of ARM consists of teams that have a length of 32 bits, and teams that have a length of 16 bits. Pipelined processors that support teams of variable length that can include conveying the level of pre-decoding for partial decoding commands to simplify the level of sequential decoding and, therefore, to arrange the conveyor. Typical conveyor level of pre-decoding checks on the code string using the base component code line by code, pre-code encodes a string and writes the pre-decoded information in the cache item is crush together with a code string. Depending on the compiler used to create a program or object code, software code may contain embedded data together with the command.

The embedded data may inadvertently be similar with the team or part of a team. In this case, the mechanism of preliminary decoding is typically misunderstand the embedded data. Thus, where the mechanism of preliminary decoding incorrect pre-decodes 16 bit data as the first part of the 32-bit command, the following 16-bit command can then, in turn, can be interpreted as the second half of the 32-bit command so that the incorrectly pre-decoded information will be stored in the cache memory, and the process of pre-decoding can get out of sync for pre-decoding the following command. Typically this does not happen to the next level decoding, which determined the synchronization error. Similar results synchronization errors in the processor delay and do not use power losses when trying to recover from mistakes preliminary decoding.

Traditional approaches to the above problem include providing a recovery mechanism for re-synchronization mechanism preliminary zakodirovana is.

The invention

Among its several aspects, the first variant embodiment of the invention determines that there is a need for a technique that prevents the mechanism of preliminary decoding due to the forced re-synchronization when the embedded data accidentally encoded as a command in the command stream, and the stream of commands includes commands from the command set of variable length and embedded data. With this purpose, this implementation includes the determination of granules, which is equal to the command smallest length in the command set, and determining the number of granules that make up the longest command in the command set as MAX. An implementation option additionally includes determining the end of the segment embedded data, when the program compile or assemblyat in the command line, and the insertion of a fill-length MAX-1 in the command line at the end of the embedded data. Sequential pre-decoding filled thread pre-decode mainly supports synchronization with the teams filled in the thread, even if the embedded data accidentally coincide with an existing team or part of a team in the instruction set of variable length.

A more complete understanding of the present invention, as well as additional signs of preimushestva of the invention will be apparent from the subsequent detailed description and the accompanying drawings.

Brief description of drawings

Figure 1 shows an exemplary wireless communication system in which a variant implementation of the invention can preferably be used.

Figure 2 is a block diagram of a processor complex, in which a variant implementation of the invention can preferably be used.

Figure 3 shows an illustrative software segment, which contains the fill instruction set of variable length, which has a team sizes 16 and 32 bits according to the first variant of the invention, which uses the filling of a fixed length.

Figure 4 shows illustrative program segment containing three single byte command set of variable length, which has a team sizes 8, 16, 24 and 32 bits according to the first variant embodiment of the invention.

Figure 5 shows an illustrative software segment, which contains two single byte command set of variable length, which has a team sizes 8, 16, 24 and 32 bits according to the second variant of the invention, which uses the padding variable length.

6 shows an illustrative program segment that contains one blank byte for the instruction set of variable length, which has a team sizes 8, 16, 24 and 32 bits according to the second variant implementation of the image is to be placed.

7 is a block diagram mashinoispytatel software according to the ideas of the invention.

Fig is a block diagram of the processor pipeline, which operates according to a variant embodiment of the invention.

Fig.9 illustrates the telescopic approach to coding for the constant padding according to a variant embodiment of the invention.

Figure 10 is a flowchart of the operational sequence of the method, which shows how to insert a padding constant size in the code according to the first variant embodiment of the invention.

11 is a flowchart of the operational sequence of the method, which shows how to insert a fill of variable size in the code according to the second variant embodiment of the invention.

Detailed description

Now the present invention will be described more fully with reference to the accompanying drawings, which show several embodiments of the invention. This invention may, however, be realized in different forms and should not be construed as limiting embodiments of outlined in this document. Rather, these implementation options are provided so that this disclosure of the invention will be detailed and complete, and will fully convey the scope of what bretania specialists in this field of technology.

Will be taken into account that the present invention can be implemented as methods, systems or computer program products. Accordingly, the present invention may take the form of a variant of implementation of the hardware version implementation software or implementation combining software and hardware aspects. Moreover, the present invention may take the form of a computer software product machineespresso media, which has machinesplay code implemented in the media. Any suitable machine-readable media may be used, including drives on your hard disk, CD-ROMs, optical storage devices, flash ROM (permanent memory device), or a magnetic storage device.

Computer program code that can be compiled, Assemblywoman previously decoded after compiling or assembling or the like according to the ideas of the invention may be first written in the programming language such as C, C++, native system commands, Assembler, JAVA, Smalltalk, JavaScriptVisual Basic, TSQL, Perl, or in various other programming languages. Code or machine-readable wear the information refers to the code machine language, for example, the object code with a format that is understandable to the processor. Software embodiments of the invention do not depend on their implementation using a particular programming language.

Figure 1 shows an exemplary wireless communication system 100 in which a variant implementation of the invention can be advantageously used. For illustration purposes, figure 1 shows three remote unit 120, 130, and 150 and two base stations 140. It is recognized that a typical wireless communication system can have a lot of remote units and base stations. Remote units 120, 130, and 150 include hardware components that perform code 125, 125B and 125C, respectively. Code 125, 125B and 125C varies according to the ideas of the invention, as discussed further below. Figure 1 shows the signal 180 advanced lines of communication from the base stations 140 and remote units 12, 13 and 15 and the signal 190 return line connection from the remote units 12, 13 and 15 to the base stations 140.

Figure 1 remote unit 120 is shown as a mobile phone, the remote unit 130 is shown as a portable computer and a remote unit 150 is shown as a remote unit of a fixed location in the system of local radio. For example, the remote units can be cell phones, handheld devices, personal communication system (PCS), portable devices the mi data, for example, personal digital assistants or data devices fixed location, such as equipment readings. Although figure 1 illustrates remote units according to the ideas of the invention, the invention is not limited to these exemplary illustrative blocks. The invention can be suitably used in any environment pipeline, which uses the level of pre-decoding or mechanism for pre-decoding the command line, which includes teams of variable length and embedded data.

Figure 2 shows the complex 200 processors, in which a variant implementation of the invention can be advantageously used. Complex 200 processors can be suitably used for execution and code storage 125A-C, modified according to the ideas of the invention. Complex 200 processor includes a Central processor 240 (CPU), a cache memory 230 data first-level cache memory 220 commands the first level and the cache memory 210 commands and data of the second level. CPU 240 is connected with the cache memory 230 data first-level cache memory 220 commands the first level cache memory 210 commands the second level. CPU 240 during the pre-decode pre-decodes the code and writes the pre-Deco the new information with the program code or in the cache memory 220 commands the first level, or in the cache memory 210 commands the second level, if the cache memory commands of the first level is filled. CPU 240 retrieves the commands and data from the cache memory in a hierarchical way. For example, when the CPU 240 you need to call the command, the CPU 240 will provide access to the cache memory 220 commands the first level, to determine compliance. If there is no match in the cache memory 220 commands the first level, the CPU 240 will provide access to the cache memory 210 commands and data of the second level. Similarly, when the CPU 240, you must call data, the CPU 240 will access the cache memory 230 data from the first level to determine compliance. If there is no match in the cache memory 230 data of the first level, the CPU 240 will provide access to the cache memory 210 commands and data of the second level. Embodiments of the invention are not limited to the illustrated complex 200 processors and additionally applicable to any set of processors that use the mechanism of preliminary decoding, for example, any computer processors with a reduced instruction set (RISC), with the help of example. It is recognized that the invention is not limited to the RISC environment.

Figure 3 shows illustrative program segment 300 that contains the filling according to the first variant of the invention, in which is inserted the filling of a constant length. Software segment 00 can be properly stored in the row cache or row cache memory of the second level, for example, the cache memory 210 of the second level or in the software storage device. It should be noted that although for purposes of illustration software segment is expected to be recovered from the row cache or row, the inventive concept is applicable to the processing software segment regardless of the storage device from which to retrieve the software segment. As the row cache memory typically has a fixed length, the terms line commands or command stream typically include one or more program segments, which can cover or not to cover the line of the cache memory. Moreover, a program segment 300 may illustrate a portion of a string cache.

Illustrative program segment 300 includes a command 310, the embedded data 320 and filling 330. Command 310 originate from the instruction set of variable length. A few examples of commands is illustrated in figure 3 of the instruction set of variable length. Commands in the instruction set of variable length in this example is 16 or 32 bits. For illustrative purposes the sign 305 bytes illustrates the location of the bytes in the string cache memory, where the command, and specifies the size of the team. For example, the command load 0A starts at position 00 byte and ends at position 03 byte. Thus, the load 0A is a team of 32 bits. Similarly to the Andes addition are teams from 16-bit, and the team of branching equal to 32 bits. In the software segment 300 bytes 322 and 324 embedded data follow the command of branching. Idle bytes 332 and 334 filling 330 were inserted according to the invention idea after 324 bytes of data. Command 326 addition follows the idle byte 334.

The embedded data 320 are not direct data, and generally refer to a nearby command in the software segment, for example the command 312 download. The propensity of the embedded data, in General, is a matter of convenience for the standard compiler. Many standard compilers, for example the ARM compilertypical form embedded data 320 within the software segment. One reason that the standard compiler can implement the data, not associated with adjacent commands, is that you must provide nearby teams easier access to the data space. For example, the boot command would be allowed to use fewer bits are offset when the address data. Referring to figure 3, the command 312 load 0A load the bytes 322 and 324 of the data, starting at offset 0.

To illustrate the predominant feature of the invention using the example, first we describe the situation in which the embedded data 230 accidentally similar to the first two bytes of the boot command in 3 bits, and filling 330 is not added. In this circumstance during the operation of the preliminary decoding pipelined processor the pre-decoding processes a row of the cache memory test using command-line cache memory test in 16 bits at a time.

The pre-decode partially decodes each command and writes a complete line of the cache memory with the pre-decoded information back to the cache memory, such cache memory 220 commands the first level and, if the cache memory of the first level is full, the cache memory 210 of the second level. Pre-decoded information, in General, may include information, for example, where the command in the string cache for sequential decoding, whether the command load or store, whether the team arithmetic, is it the first or second half of a larger team, whether the team complex, and the like. Because of the presence of embedded data 320, which we meant similar to the first part of the boot command, the embedded data will be incorrectly interpreted as part of the command boot-device pre-decoding. In this example, the serial command 336 of the addition will be incorrect will precede the correctly decoded as the second half load.

Turning to operation of the unit prior decoding fill-330 added, as shown in figure 3, the pre-decoding will step on the line 300 to the cache memory in the pellet using a basic component of the granules. A granule is a unit of measurement equal size, the shortest length in the instruction set of variable length. For this example, the instruction set contains 16-bit and 32-bit commands. Thus, one granule is equal to 16 bits. In General, the size of the embedded data is a multiple of the granule, for a set of commands. In relation to the software segment 300 pre-decoding first checks the first pellet, the first 16-bit command 312 load 0A, followed by a second bead, the second 16-bit command 312 load 0A. Secondly, the pre-decoding checks the next pellet, 16 bits 16-bit command addition. Thirdly, the pre-decoding checks the next pellet, the first 16 bits of the command branching E. Since the embedded data 320 are the first 16 bits of the boot command, the pre-decode pre-decodes the embedded data 320, followed by filling 330, as if they together constituted a 32-bit command load. Thus, what is inserted for filling according to the ideas of the invention, the pre-decode mainly supports synchronization with the following command in the string cache memory that when it checks the next pellet, an add instruction, beginning in position E bytes, it correctly identifies the add instruction. As discussed above, without the inserted filling, the pre-decode pre-decode command 336 adding, as if it were the remaining 16 bits of the command, that results in the pre-decode correctly prior to decoding commands 336 addition and possibly also subsequent commands.

If the row cache pre-decoded row cache memory and pre-decoded information is written to the cache memory and is ready for sequential decoding and execution. It should be noted that the pre-decoding can generate incorrect pre-decoded information due to pre-decode the embedded data and populate 330 as the remaining 16 bits of the boot command. Such incorrect pre-decoded information does not matter, because when the program actually runs on a property of the sequence of program execution, the instruction pointer will not be directed to perform embedded data or embedded filling. For example, after execution of the command branch 0 is the instruction pointer will point to the address E and cause further command 336 addition, ignoring the embedded data 320 and filling 330 and any related associative incorrectly pre-decoded information.

Figure 4 shows an illustrative software segment 400, which contains three single byte command set of variable length, which has dimensions of team 8, 16, 24 and 32 bits according to the first variant embodiment of the invention. Software segment 400 can be appropriately saved as part of the line cache line cache or multiple rows to the cache memory, the cache memory of the second level, for example, the cache memory 210 of the second level. Alternative software segment 400 may be stored in some other form of software storage device. The software segment includes command 400, the embedded data 420 and filling 430. In this example, commands 410 originate from the instruction set of variable length, which has length 8, 16, 24 or 32 bits. The size of the granules for a set of commands variable length is 8 bits or one byte. For purposes of explanation characteristic 405 bytes illustrates the location of the byte in the string cache memory. In the software segment 400 embedded data 420 follow the command 414 branching. Bytes 432, 434 and 436 filling 430 were inserted according to the invention idea after 426 bytes of data in the provisions of 09, 0A and 0 bytes, respectively. Command 416 conservation (Coman is and STOR), 8-bit command, followed blank 436 bytes and starts at position OS byte. Command 418 multiplication (MULT), 24-bit command, starts next position 0D bytes.

As the smallest team in this example is equal to one byte, the pellet is equal to one byte. The pre-decoding will check one granule at the time of processing software segment 400. For all software segments 400, 500 and 600 figure 4-6, respectively, the pre-decoding operates on the first eight bytes of the respective program segment in the same way. In order to simplify the discussion, we will describe these eight bytes with reference to figure 4. The pre-decoding will check the first granule command 412 download 06 will determine that the first pellet is a download command, and then verify the following three pellets, the provisions 01-03 bytes from the string cache memory for pre-decoding commands 412 download 06. The pre-decoding will then check the first granule command 414 branching 0C, to determine that the first pellet is a branching 0C, and then check the next pellet, position 05 byte from the string cache memory for pre-decoding the command 414 branching 0C. Byte is 422 and 424 data differently encoded from any command in the command set of variable length. Thus, the pre-decoding will check the pellet in position 06 bytes, to determine that it contains the data and continue. It continues to check the next pellet in position 07 byte byte 424 data and correctly determines that the byte 424 data also contains data.

For example, illustrated in figure 4, 426 bytes of data accidentally coincide with the first 8 bits of the 32-bit command, for example, the boot command. Sequentially, after the pre-decode pre-decode byte 426 data as the first part of the 32-bit boot command, the pre-decoding will consider the following three pellets, idle bytes 432, 434 and 436, as if these three bytes was the rest of this random load. Because filling 430 the following command 416 STOR will be correctly pre-decoded, thereby maintaining synchronization between the pre-decoding and commands in the string cache memory. Without insert for the filling device 430 preliminary decoding misunderstood bytes related commands 416 STOR and commands 418 MULTI, as the bytes corresponding to the last 3 bytes of random load, which results in the device prior to the pre-decoding on the coding team 416 STOR, as the second byte of the random load, and the first two bytes of the command 418 MULTI, as the last two bytes of the random command load, thus causing the pre-decoding to get out of sync with the commands in the string cache.

As an additional example, if the byte 426 data figure 4 was coded, randomly coinciding with the first 8 bits of 24-bit command is similar MULTI, pre-decode check the following two pellets, idle bytes 432 and 434, as if these two bytes would belong to the random team MULTI. The pre-decoding checks then the next pellet, idle bytes 436. If idle bytes 436 was encoded as an 8-bit command or encoded as data is determined from a set of commands that are addressable additionally below, the pre-decoding checks then the next granule found in position 0 of the command byte 416 STOR. This example illustrates that regardless of how 426 bytes of data misunderstood, filling 430 prevents the integrity of the definition of the command following the embedded data.

Figure 5 shows illustrative program segment 500, containing two single byte command set of variable length, which has a team sizes 8, 16, 24 and 32 bits according to Oromo variant of the invention, uses changing the padding. Figure 5 illustrates how other padding may be inserted in the code, depending on how the embedded data, which coincide with the team, misunderstood by the pre-decoding. Use padding variable length mainly reduces the amount of code. Software segment 500 includes commands 510, data 520 and filling 530. Software segment 500 is the same as the software segment 400, except that the software segment 500 has one idle bytes less in filling 530, and thus, the commands that follow blank 534 bytes are shifted one position byte up in the row cache. Because of the shift destination address of the command 514 branching 0V reduced by one byte.

An example is illustrated in figure 5, includes 526 bytes of data, which incidentally coincides with the first 8 bits of 24-bit commands in the command set of variable length. Thus, when the device is pre-decoding starts pre-decode byte 526 data, the pre-coding checks for the following two granules, idle bytes 532 and 534, as if these two bytes were the remnant of a random 24-bit commands. Pre decterov the Oia then checks the next pellet, command 516 STOR for pre-decoding, support synchronization between the pre-coding and commands in the string cache memory. In the example illustrated in figure 5, the filling of two bytes is sufficient, than filling three bytes used in figure 4.

Without insert for the filling device 530 preliminary decoding a wrong understanding of granules that match the command 516 STOR and command 518 MULTI as bytes, corresponding to the last two bytes of random 24-bit command, resulting in the output of the pre-decoding of the synchronization with the line of the cache memory. Thus, the integrity of the definition of the command following the embedded data is at risk.

6 shows an illustrative software segment 600 containing one blank byte for the instruction set of variable length, which has a team sizes 8, 16, 24 and 32 bits according to the second variant embodiment of the invention. 6 illustrates how only one idle bytes may be inserted in the code depending on how the data is incorrectly understood by the pre-decoding. Software segment 600 includes a command 610, data 620 and filling 630. Software segment 600 is the same software segments 500, and the key, what software segment 600 on an idle byte less filling 630, and thus, the commands that follow the no-632 bytes are shifted one position of the byte in the string cache memory. Because of the shift destination address of the command 614 branching 0A reduced by one byte.

The example illustrated in figure 6, includes 626 bytes of data, which incidentally coincides with the first 8 bits of the 16-bit commands in the command set of variable length. When the device is pre-decoding starts pre-decode byte 626 data, the pre-decoding checks the next pellet, idle bytes 632, as if idle bytes 632 would belong to the 16-bit command, denoted by 626 bytes of data. The pre-decoding then checks the next pellet, command 616 STOR for pre-decoding while maintaining synchronization between the pre-decoding and commands in the string cache memory. In the example illustrated in Fig.6, because 632 bytes of data coincides with the first 8 bits of the 16-bit command, filling in the size of one byte is sufficient.

As shown in the examples described in connection with figure 5 and 6, the padding inserted after the inserted data may vary. As a software compiler or assembler, perform the different on the computer generates code with commands and embedded data, as illustrated in figure 3-6 programming language higher level, the compiler or assembler can determine when the embedded data coincide with the command from the command set of variable length and, respectively, to insert the filling. As discussed further below, can be used in the filling of a fixed length or variable length.

7 is a flowchart 700 of a computer 710, performing software 730 according to the ideas of the invention. Although not illustrated, the computer 710 includes internal components such as processor, storage device, input/output bus for communication between the internal components. Software 730 may accordingly be a compiler or assembler, which varies according to the ideas of the invention. Software 730 permanently stored in the storage device of the computer 710. Software 730 receives the program 720 as input and generates a compiled or assemblycompany code 740 with padding inserted according to the invention as output. The program 720 may be written in C, C++, native system commands, Assembler, JAVA, Smalltalk, JavaScriptVisual Basic, TSQL, Perl, Il is in various other programming languages. The program 720 is written to perform a specific function in the target processor, for example, contained in a cell phone, handheld device, personal communication system (PCS), computer and portable data devices, while software code 740 is performed in the target processor. The target processor may or may not be other than the computer 710 that performs software 730.

Software 730 includes a means for holding the parsing program 720 to determine the structural content of the program 720 and if the program 720 syntactically correct. Means for holding the parser converts the program 720 in the internal form. Software 730 additionally includes means for forming a code. The means for forming a code translates the internal form in the object code that can be executed by the target processor. The object code consists of one or more program segments that have embedded data and commands from the command set of variable length. Software 730 additionally includes means for inserting a fill at the end of the segment embedded data.

In order to calculate the padding to insert between the inserted data after the existing command, software 730 includes an additional analysis tool to analyze the contents of the embedded data segment. The segment of the embedded data is embedded in the instruction stream, surrounded by teams. Software 730 optionally includes an additional means of determining. During compilation of the program 720 the means for determining determines whether the encoded any granules within the embedded data segment to be similar to granule commands in the command set. If so, the tool inserts inserts many idle granules after the embedded data, taking into account the length of the command with which the pellet embedded data is similar, and the location of the granules embedded data concerning the subsequent command.

Alternative software 730 may further include means for inserting the filling of a consistent size. This alternative approach mainly reduces the complexity of software 730 fact that it is not necessary to analyze the encoding of the embedded data. In this alternative embodiment, the software 730 includes a means for detecting the transition between the end of the segment embedded data and command. The tool then inserts the insertion of the filling, which has the permanent number of the blank granules, when you define a transition from a segment of the embedded data to the team. Every single pellet is inserted filling can be properly encoded to contain a valid command, which has the length of one of the pellets that are already defined in the command set, or may simply contain data that must be encoded and which have no similarity with any command in the command set. Alternative encoding populate discussed further in connection with the consideration of Fig.9 below.

In order to determine the number of idle granules forming the filling permanent size you want to insert the code 740, software 730 uses of different lengths, which form the set of commands supported by the target processor. The number of idle granules forming the filling of a consistent size, can be written as:

PZ= (Max(instrlen) - Min(instrlen))/Min{instrlen)

(1),

which simplifies to

Pz = (Max(instrlen)/Min(instrlen)) -1 and for convenience

(2)

MAX = (Max(instrlen)/Min(instrlen)), thus simplifying

(3)

Pz = MAX-l(4),

where Pz is the size of the fill granules, Max(instrlen) is the length of the longest team in bits, Min(instrlen) is the length of the shortest teams in bits and MAX is the length of the longest team in the granules. For example, the set of commands, with 32 - and 16-bit commands, one granule is equal to 16 bits command of the shortest length. The number of fillings in the granules is equal to (32[bits]/16[bits/granule])-1, which equals a single granule or 16 bits. Thus, filling, containing a 16-bit command, taken from the set of commands can be inserted, where there were no transition between the data and the following command.

Using another example, in the instruction set with 32-, 16 -, and 8-bit commands, one granule is equal to 8 bits, the short commands. The number of fillings in the granules is equal to (32[bits]/8[bits/granule])-1, which equals three granules or 24 bits. Thus, 24-bit filling can then be inserted wherever there is a transition between the data and the following command. Other options that is 24-bit filling, further described below in connection with the consideration of Fig.9. The contents of the padding variable length is described below in connection with 11.

Fig is a block diagram of the processor pipeline 800, which operates according to a variant embodiment of the invention. The processing pipeline 800 includes a call from a cell 810 cache of the first level, the call from the cache memory 820 of the second level, the device 830 preliminary decoding, 840 cell records cell 850 teams locations and cell 860 decoding and execution.

It should be noted that the device 830 pre-decoding is not pre-decodes the embedded data, which do not coincide with the team. However, if the embedded data coincide with the command, the embedded data and potential filling can be pre-decoded. As described above, such an erroneous pre-decoded information does not matter, because when the program actually runs through the process of program execution, the instruction pointer is not directed to execute embedded data or embedded filling. Embodiments of the invention are not limited to the illustrated conveyor 800 and additionally applicable to any pipelined processor that includes the operation of pre-decoding, which pre-decodes the instruction sets of variable length.

For software segments, as shown in Fig.3-6, the pre-decoding works in the software segment in the grain-based pellets until the pellets are not defined as a command in the command set. When the granule is defined as a command in the command set, one or more additional granules are tested for pre-decoding of the whole team. Using encoding content-filling affinity with commands the set commands, the pre-decoding can track the following command more efficiently.

Fig.9 illustrates the telescopic approach to coding for the constant padding 900 for a set of commands that has 32-, 24-, 16 -, and 8-bit command according to a variant embodiment of the invention. According to the formula (2) above the maximum fill size equal to three granules or bytes for this particular set of instructions of variable length. Filling 900 is inserted whenever there was a transition between embedded data and the subsequent command at the end of the embedded data. This filling is 900 may consist of data that are not defined as granule team. Alternative filling 900 may consist of varying combinations of commands taken from the instruction set. For example, the filling may contain three 8-bit commands or telescopic coding. Telescopic encoding may contain the first byte 910 encoded to define as the first byte of 24-bit command, the second byte 920, which is encoded to define as the first byte of 16-bit command, and the third byte 930, which is encoded to define as an 8-bit command. Using telescopic encode 24-bit filling device 900 830 pre-decoding can be synchronized with the subsequent command after a 24-bit filling 900 regardless of where in the 24-bit filling operations the pre-decoding is terminated incorrectly decoding the embedded data as commands.

Figure 10 is a flowchart of the operational sequence of the method, which illustrates a method 1000 for inserting filling permanent size in code, for example, program code 740 according to the first variant embodiment of the invention. Software 730, as described above, running on the computer 710 may implement the steps of method 1000. At step 1010, the method analyzes the length of the command set variable length conveyor supported by the processor to determine the size of the filling. At step 1010, the equation (2)above is used to determine the size of the filling. At step 1015 is determined by the contents of the fill. One example is the preparation of seeding the known commands of the command set, the length of which is equal to the padding. For example, in the instruction set of variable length, which has 16-bit and 32-bit command, the padding is equal to 16 bits. Thus, the choice of 16-bit command from the command set that you want to insert as a filling. In another example, the creation of a fill by selecting the short commands of the command set and the connection it many times, until it reaches the same amount of filling. An additional example is the invention of the telescopic encoding, or select a telescopic commands from the command set, as the description is provided in Fig.9, if it exists. In another example, the filling may contain data that is different from the commands in the command set. As described above in connection with figure 3, the pre-decoded information arising from the pre-decoding the embedded data, or filling does not matter, as the process of execution of a program usually does not lead to the execution of embedded data or filling. It is recognized that alternative cell may be modified to determine seeding in the unlikely situation where the cell is run, it attempts to execute the embedded data or padding.

At step 1020 during the formation of the program code or software compiler, or at the stage of Assembly, the method determines whether there is a transition point between embedded data and the following command. If there is no embedded data, the method proceeds to step 1040. If there are embedded data, the method proceeds to step 1030. At step 1030, the filling is inserted in the code at the point of transition between embedded data and the following command. At step 1040, the method determines whether completed the formation of the code. If Yes, method 1000 ends, and the code generated from the inserted filling. If no, method 1000 proceeds to step 1020, where he continues stable the fill in the transitions between embedded data and the subsequent commands. When the method completes, the generated code contains the filling to allow the pre-decode correctly identify command variable length as a team, if the embedded data is similar to the command.

11 is a flowchart of the operational sequence of the method, which illustrates a method 1100 for inserting filling of variable size in the code according to the second variant embodiment of the invention. Software 730, as described above, running on the computer 710 may implement the steps of method 1100. At step 1110, the method analyzes the command set variable length to determine that the granule is equal to the size of the short commands. An alternative way might just know him or can tell the size of the granules. This step can be implemented as a set choice of compiler software 730, which transmits data software 730 about the team with the shortest length in the command set. Alternatively, since the software 730 generates code that includes the commands from the command set, software 730 may already know the length of the short commands of the conditions that this step only involves reading during execution of the software 730 to determine RA is a measure of single granules. At step 1120 during compilation or Assembly code in the command stream, the method 1100 determines coded whether the pellet embedded data, for example, a constant stream of commands to be similar to the command from the command set of variable length. If no, the method 1100 proceeds to step 1125. At step 1125, the method determines whether completed compiling or assembling. If Yes, the method 1100 ends. Otherwise, the method 1100 proceeds go to step 1120.

Returning to step 1120, if the pellet embedded data is encoded so that it has similarities with the team, the method 1100 proceeds to step 1130. At step 1130, the method 1100 checks the following X-1 granules thread, where X is the size of the granules of similar commands. At step 1135, the method 1100 determines the number N of granules, are there any after switching between embedded data and the following command to verify the following X-1 granules, starting after the pellet embedded data is encoded to be similar to the command.

In other words, this definition stage considers the number of granules that subsequent pre-decoding checks for completion of the preliminary decoding commands, pellet embedded data which is similar. For example, if the pellet is one byte and the data granule is similar to the first byte of 32-bit is the commands themselves, the method 1100 checks the first three bytes of the instruction stream to determine whether there is a transition from the embedded data for the next command.

The method 1100 proceeds to step 1138, where it determines whether more N than zero. If N is not greater than zero, pellet embedded data, which is similar to the team will not have a relationship to the subsequent pre-decoding, as the volume of replacement caused a potential error pre-decoding, is still within the embedded data, which have a similar command. Thus, the method proceeds to step 1125. If N is greater than zero, the method proceeds to step 1140. At step 1140, the method 1100 inserts filling in the transition between embedded data and the following command. The inserted filling has size N equal to the number of granules that passed the transition between embedded data and the following command is found at step 1130. When the method completes, the overall code will contain padding so as to enable the pre-decode correctly identify command variable length as a team, when the embedded data is similar to the command.

As figure 5 shows an illustrative result of the method 1100, let's refer, for example, in figure 5, with no padding. Calling this 526 bytes of data accidentally by the coolant in the first 8 bits of the 24-bit command, and that one pellet is equal to 8 bits, the method 1100 checks the following X-1 or two pellets after 526 bytes of data. In checking the first pellet method 1100 distinguishes 8-bit command 516 STOR and determines that happened transition from the embedded data to the team. In the second test granules, the method 1100 determines the first byte of the command 518 MULTI. Because the first byte of the command 518 MULTI is in two granules of the transition, N is equal to two granules. Therefore, two pellets filling 530 are then inserted in the transition, as shown in Fig.6. When compiling or assembling is completed, the code may contain the inserted filling, which has a different length.

While the invention is disclosed in the context of embodiments, it is recognized that a wide range of embodiments can be used by experts in the field of technology that are consistent with the above discussion and the claims which follows.

1. The way to ensure correct pre-decoding of the commands in the command string that contains the commands from the command set and the embedded data segment, and the set of commands is the command variable length, the length of the smallest teams in the instruction set defines the pellet, the number of granules that make up the team with the greatest length in the set of commands defines the MACH number, the ri this method contains the steps which
determine the end of the first segment of the embedded data in the command line when the program compile or assemblyat to the command; and
insert the fill length of the MACH-1 granules in the end of the first segment of the embedded data for the formation of the completed command line, and
retain the completed command line.

2. The method according to claim 1, in which the filling of the code to be different from any of the commands in the command set.

3. The method according to claim 1, in which the filling of the code to include a variety of commands from a set of commands associated with each other.

4. The method according to claim 1, in which the filling encode telescopically to synchronize the pre-decoding the embedded data at the end of the first segment of the embedded data.

5. The method according to claim 4, in which the longest command is equal to 32 bits, the short command is 8 bits, the other team is 24 and 16 bits, the padding is three bytes, and telescopically encoded filling is the first byte, which is the first byte of the 24-bit command, the second byte is the first byte of 16-bit command, and the third byte, which is 8-bit command.

6. The method according to claim 1, wherein the step of determining the end of the segment embedded data further comprises the steps on which distinguish the transition, when a subsequent command in the string is f commands follows the embedded data segment.

7. The method according to claim 1, in which the shortest command is 8 bits.

8. The method according to claim 1, which further comprises the steps, which determine the end of the second segment of the embedded data, and insert the filling length of the MACH-1 granules in the end of the second embedded segment.

9. The method according to claim 1, in which the shortest command is equal to 16 bits.

10. The method according to claim 9, in which the longest command is equal to 32 bits.

11. The way to ensure correct pre-decoding of the commands in the command string that contains the commands from the command set and the embedded data, and the set of commands is the command variable length command smallest length in the set of commands defines the granule, the method contains the steps that
determine coded whether the pellet embedded data in the string of commands to be similar to the command in the command set;
check at least the following X-1 pellet line commands to switch between embedded data and the following command, where X is the size of the granules is similar commands;
determine the number Y of pellets, is not found on the stage at which check X-1 granules, resulting in the detection of the transition between embedded data and the next command in the sequence of scanned X-1 granules; and
insert the fill size of Y after the transition, if Y is greater than 0, for the formation for alsenoy line commands; and
bring the completed command line.

12. The method according to claim 11, in which the filling of the code to be different from any of the commands in the command set.

13. The method according to claim 11, in which the filling of the code to include a variety of commands from a set of commands associated with each other.

14. The method according to claim 11, in which the filling encode telescopically.

15. The method according to claim 11, in which the shortest command is 8 bits.

16. The method according to claim 11, in which the shortest command is equal to 16 bits.

17. The computer-readable storage medium including program codes stored thereon and executable by the computer to ensure correct pre-decode command line commands, and program codes contain
first program code to read command lines containing at least one segment of the embedded data;
second program code for identifying data at the end of at least one segment of the embedded data as similar command variable length;
third program code for inserting on the basis of the identified data fill adjacent to at least one segment of the embedded data, for forming a full line of commands; and
fourth program code for saving a full line of commands.

18. The computer-readable storage medium according to 17, W is the length of the smallest teams in the instruction set of variable length defines the granule, and the greatest length is a multiple of one or more granules, MAX, in fact the padding is the padding size is equal to the MACH-1 granules.

19. Computer system to ensure correct pre-decoding the command line, which contains the commands of the command set and the embedded data, and the set of commands is the command variable length command smallest length in the set of commands defines the pellet, the number of granules that make up the team the greatest length in the set of commands defines the MACH number, when this computer system contains
means for detecting a transition where the next command follows the embedded data in the command string;
tool for inserting the filling length of the MACH-1 granules after the embedded data, forming the completed string of commands; and
means for saving a full line of commands.

20. The computer-readable storage medium including program codes stored thereon and executable by the computer to ensure correct pre-decode command line commands, and program codes contain
first program code for determining the number of granules that make up the team the greatest length in the command set, MAX;
second program code for detecting a transition in the command line, where subsequent the team follows the embedded data; and
third program code for inserting the filling length of the MACH-1 granules after the embedded data, forming the completed string of commands; and
fourth program code for saving a full line of commands.



 

Same patents:

FIELD: physics; computer engineering.

SUBSTANCE: invention relates to processors with pipeline architecture. The method of correcting an incorrectly early decoded instruction comprises stages on which: the early decoding error is detected and a procedure is called for correcting branching with a destination address for the incorrectly early decoded instruction in response to detection of the said error. The early decoded instruction is evaluated as an instruction, which corresponds to incorrectly predicted branching.

EFFECT: improved processor efficiency.

22 cl, 3 dwg, 1 tbl

FIELD: information technology.

SUBSTANCE: present invention relates to computer engineering and can be used in signal processing systems. The device contains an instruction buffer, memory control unit, second level cache memory, integral arithmetic-logic unit (ALU), floating point arithmetic unit and a system controller.

EFFECT: more functional capabilities of the device due to processing signals and images when working with floating point arithmetic.

4 cl, 4 dwg

FIELD: information technologies.

SUBSTANCE: command of message digest generation is selected from memory, in response to selection of message digest generation command from memory on the basis of previously specified code of function, operation of message digest generation, which is subject to execution, is determined, at that previously specified code of function defines operation of message digest calculation or operation of function request, if determined operation of message digest generation subject to execution is operation of message digest calculation, in respect to operand, operation of message digest calculation is executed, which contains algorithm of hash coding, if determined operation of message digest generation subject to execution is operation of function request, bits of condition word are stored in block of parameters that correspond to one or several codes of function installed in processor.

EFFECT: expansion of computer field by addition of new commands or instructions.

14 cl, 18 dwg

FIELD: physics; computer technology.

SUBSTANCE: present invention pertains to digital signal processors with configurable multiplier-accumulation units and arithmetic-logical units. The device has a first multiplier-accumulation unit for receiving and multiplying the first and second operands, storage of the obtained result in the first intermediate register, adding it to the third operand, a second multiplier-accumulation unit, for receiving and multiplying the fourth and fifth operands, storage of the obtained result in the second intermediate register, adding the sixth operand or with the stored second intermediate result, or with the sum of the stored first and second intermediate results. Multiplier-accumulation units react on the processor instructions for dynamic reconfiguration between the first configuration, in which the first and second multiplier-accumulation units operate independently, and the second configuration, in which the first and second multiplier-accumulation units are connected and operate together.

EFFECT: faster operation of the device and flexible simultaneous carrying out of different types of operations.

21 cl, 9 dwg

FIELD: physics.

SUBSTANCE: invention pertains to the means of providing for computer architecture. Description is given of the method, system and the computer program for computing the data authentication code. The data are stored in the memory of the computing medium. The memory unit required for computing the authentication code is given through commands. During the computing operation the processor defines one of the encoding methods, which is subject to implementation during computation of the authentication code.

EFFECT: wider functional capabilities of the computing system with provision for new extra commands or instructions with possibility of emulating other architectures.

10 cl, 15 dwg

FIELD: engineering of microprocessors and computer systems.

SUBSTANCE: in accordance to shuffling instruction, first operand is received, which contains a set of L data elements, and second operand, which contains a set of L shuffling masks, where each shuffling mask includes a "reset to zero" field and selection field, for each shuffling mask, if the "reset to zero" field of shuffling mask is not set, then data indicated by shuffling mask selection field are moved, from data element of first operand, into associated data element of result, and if "reset to zero" field of shuffling mask is set, then zero is placed in associated data element of result.

EFFECT: improved characteristics of processor and increased productivity thereof.

8 cl, 43 dwg

FIELD: network communications, in particular, control means built into applications for conduction of network exchange.

SUBSTANCE: expandable communication control means is used for maintaining communication between computing device and remote communication device. In a computer program adapted for using expandable communication control means, information about contacting side is found, and on basis of found contact information it is determined which types of transactions may be used for communication with contacting side at remote communication device. As soon as communication setup function is determined using contacting side information, communication setup request, associated with such a function, is dispatched to communication address. After receipt, expandable communication control means begins conduction of communication with remote communication device.

EFFECT: creation of more flexible and adaptable software communication control means (program components) for processing communications (connections, exchange) between devices.

3 cl, 11 dwg

FIELD: computing devices with configurable number length for long numbers.

SUBSTANCE: device consists of two computing device units, each of them divided into at least four subunits, which consist of a quantity of unit cells. Named units are spatially located so that the distance between unit cell of first unit and equal unit cell in the second unit is minimal. Computing device configuration can be changed using configurational switches, which are installed between device subunits.

EFFECT: increased performance of computing device, reduced time of data processing.

12 cl, 6 dwg

FIELD: engineering of data processing systems, which realize operations of type "one command stream and multiple data streams".

SUBSTANCE: system is disclosed with command (ADD8TO16), which decompresses non-adjacent parts of data word with utilization of signed or zero expansion and combines them by means of arithmetic operation "one command stream, multiple data streams", such as adding, performed in response to one and the same command. Command is especially useful for utilization in systems having a data channel, containing a shifting circuit before the arithmetic circuit.

EFFECT: possible use for existing processing resources in data processing system in a more efficient way.

3 cl, 5 dwg

The invention relates to data processing systems having a rated Bank and supporting vector operations

FIELD: engineering of data processing systems, which realize operations of type "one command stream and multiple data streams".

SUBSTANCE: system is disclosed with command (ADD8TO16), which decompresses non-adjacent parts of data word with utilization of signed or zero expansion and combines them by means of arithmetic operation "one command stream, multiple data streams", such as adding, performed in response to one and the same command. Command is especially useful for utilization in systems having a data channel, containing a shifting circuit before the arithmetic circuit.

EFFECT: possible use for existing processing resources in data processing system in a more efficient way.

3 cl, 5 dwg

FIELD: computing devices with configurable number length for long numbers.

SUBSTANCE: device consists of two computing device units, each of them divided into at least four subunits, which consist of a quantity of unit cells. Named units are spatially located so that the distance between unit cell of first unit and equal unit cell in the second unit is minimal. Computing device configuration can be changed using configurational switches, which are installed between device subunits.

EFFECT: increased performance of computing device, reduced time of data processing.

12 cl, 6 dwg

FIELD: network communications, in particular, control means built into applications for conduction of network exchange.

SUBSTANCE: expandable communication control means is used for maintaining communication between computing device and remote communication device. In a computer program adapted for using expandable communication control means, information about contacting side is found, and on basis of found contact information it is determined which types of transactions may be used for communication with contacting side at remote communication device. As soon as communication setup function is determined using contacting side information, communication setup request, associated with such a function, is dispatched to communication address. After receipt, expandable communication control means begins conduction of communication with remote communication device.

EFFECT: creation of more flexible and adaptable software communication control means (program components) for processing communications (connections, exchange) between devices.

3 cl, 11 dwg

FIELD: engineering of microprocessors and computer systems.

SUBSTANCE: in accordance to shuffling instruction, first operand is received, which contains a set of L data elements, and second operand, which contains a set of L shuffling masks, where each shuffling mask includes a "reset to zero" field and selection field, for each shuffling mask, if the "reset to zero" field of shuffling mask is not set, then data indicated by shuffling mask selection field are moved, from data element of first operand, into associated data element of result, and if "reset to zero" field of shuffling mask is set, then zero is placed in associated data element of result.

EFFECT: improved characteristics of processor and increased productivity thereof.

8 cl, 43 dwg

FIELD: physics.

SUBSTANCE: invention pertains to the means of providing for computer architecture. Description is given of the method, system and the computer program for computing the data authentication code. The data are stored in the memory of the computing medium. The memory unit required for computing the authentication code is given through commands. During the computing operation the processor defines one of the encoding methods, which is subject to implementation during computation of the authentication code.

EFFECT: wider functional capabilities of the computing system with provision for new extra commands or instructions with possibility of emulating other architectures.

10 cl, 15 dwg

FIELD: physics; computer technology.

SUBSTANCE: present invention pertains to digital signal processors with configurable multiplier-accumulation units and arithmetic-logical units. The device has a first multiplier-accumulation unit for receiving and multiplying the first and second operands, storage of the obtained result in the first intermediate register, adding it to the third operand, a second multiplier-accumulation unit, for receiving and multiplying the fourth and fifth operands, storage of the obtained result in the second intermediate register, adding the sixth operand or with the stored second intermediate result, or with the sum of the stored first and second intermediate results. Multiplier-accumulation units react on the processor instructions for dynamic reconfiguration between the first configuration, in which the first and second multiplier-accumulation units operate independently, and the second configuration, in which the first and second multiplier-accumulation units are connected and operate together.

EFFECT: faster operation of the device and flexible simultaneous carrying out of different types of operations.

21 cl, 9 dwg

FIELD: information technologies.

SUBSTANCE: command of message digest generation is selected from memory, in response to selection of message digest generation command from memory on the basis of previously specified code of function, operation of message digest generation, which is subject to execution, is determined, at that previously specified code of function defines operation of message digest calculation or operation of function request, if determined operation of message digest generation subject to execution is operation of message digest calculation, in respect to operand, operation of message digest calculation is executed, which contains algorithm of hash coding, if determined operation of message digest generation subject to execution is operation of function request, bits of condition word are stored in block of parameters that correspond to one or several codes of function installed in processor.

EFFECT: expansion of computer field by addition of new commands or instructions.

14 cl, 18 dwg

FIELD: information technology.

SUBSTANCE: present invention relates to computer engineering and can be used in signal processing systems. The device contains an instruction buffer, memory control unit, second level cache memory, integral arithmetic-logic unit (ALU), floating point arithmetic unit and a system controller.

EFFECT: more functional capabilities of the device due to processing signals and images when working with floating point arithmetic.

4 cl, 4 dwg

FIELD: physics; computer engineering.

SUBSTANCE: invention relates to processors with pipeline architecture. The method of correcting an incorrectly early decoded instruction comprises stages on which: the early decoding error is detected and a procedure is called for correcting branching with a destination address for the incorrectly early decoded instruction in response to detection of the said error. The early decoded instruction is evaluated as an instruction, which corresponds to incorrectly predicted branching.

EFFECT: improved processor efficiency.

22 cl, 3 dwg, 1 tbl

FIELD: information technology.

SUBSTANCE: method involves defining a granule which is equal to the smallest length instruction in the instruction set and defining the number of granules making up the longest length instruction in the instruction denoted MAX. The method also involves determining the end of an embedded data segment, when a program is compiled or assembled into the instruction string and inserting a padding of length MAX-1 into the instruction string to the end of the embedded data. Upon pre-decoding of the padded instruction string, a pre-decoder maintains synchronisation with the instructions in the padded instruction string even if embedded data are randomly encoded to resemble an existing instruction in the variable length instruction set.

EFFECT: ensuring reconstruction during repeated synchronisation owing to reduced errors of synchronising the mechanism for pre-decoding the instruction string.

20 cl, 11 dwg

Up!