WO1994015269A2 - Apparatus, system and method for facilitating communication between components having different byte orderings - Google Patents
Apparatus, system and method for facilitating communication between components having different byte orderings Download PDFInfo
- Publication number
- WO1994015269A2 WO1994015269A2 PCT/US1993/012416 US9312416W WO9415269A2 WO 1994015269 A2 WO1994015269 A2 WO 1994015269A2 US 9312416 W US9312416 W US 9312416W WO 9415269 A2 WO9415269 A2 WO 9415269A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- byte
- component
- information
- byte ordering
- ordering
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/768—Data position reversal, e.g. bit reversal, byte swapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4013—Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
Definitions
- This invention relates to a system and method for allowing a computer-related component having a first byte ordering to effectively communicate with a computer- elated component having a second byte ordering.
- Embodiments of the present invention also envision a system and method for determining whether two components have the same byte ordering and for making provisions allowing the two components to communicate with each other.
- embodiments of the present invention contemplate that these provisions allowing the two components to communicate with each other can be administered dynamically.
- Byte ordering relates to the order in which bytes are ranked (typically within a "word” or portion thereof) from least significant to most significant in relation to the bit order (which concerns the order in which bits are ranked) .
- Components such as processor interfaces, memory devices and I/O interfaces typically need to be pre- configured to utilize a particular byte ordering. This is so these components can effectively communicate within a conventional computer system.
- Software components such as operating systems and application programs typically inherently utilize (and can be said to "have") the byte ordering of the hardware they were created on. Byte ordering is not an issue for the registers of a processor itself, since the bytes within a register cannot typically be selectively accessed (and thus, by default, the least significant byte is the one comprising the lowest order bits) .
- the majority of computer architectures utilize one of two different types of byte ordering schemes. In the first type, the least significant byte comprises the eight least-significant bits of a word. Similarly, the most significant byte comprises the eight most- significant bits. The significance of each byte is thus proportional to the significance of the bits that it encompasses.
- the least significant byte comprises the eight most-significant bits of a word.
- the significance of each byte is thus inversely proportional to the significance of the bits that it comprises.
- This type of byte ordering is known as "big endian" byte ordering and has been adopted by International Business Machines of Ar onk, N.Y. in their 370 mainframe computers and in computers using 68000 line of processors manufactured by Motorola of Schaumburg, 111. It should be noted that for both big and little endian types of byte ordering, the significance of the bits (i.e., the bit order) is unaffected by the byte ordering used.
- this Figure shows the effect of a single byte of information transmitted from a register 102 within a processor (not shown) across the busses of two different computer systems (each having its own processor and register 102) .
- the information is transmitted across a 32 bit bus 104 within a little endian computer system and across a 32 bit bus 106 within a big endian computer system. Since only one byte is being transmitted, the information is positioned in the 8 leas -significant bits of register 102.
- the register 102 is thus presumed to be within a processor having a little endian byte ordering in the example using bus 104 and in a processor having a big endian byte ordering in the example using bus 106.
- the busses 104 and 106 are labeled “byte 0" - "byte 3.” This represents the significance of each byte (with byte 0 being the least significant byte) transmitted across the busses.
- the single byte of information (information (A) ) from register 102 is shown (for each computer system) being transmitted at "byte 1" across each bus to a location representative of "byte 1" of some component (not shown) .
- the busses 104 and 106 thus reflect the byte ordering that the bytes are received by the component. Consequently, the way that byte information is transmitted on the busses 104 and 106 can be used as a good illustration of the differences between the use of big endian and little endian byte ordering.
- the most apparent difference between the little endian byte ordering as shown by bus 104 and the big endian byte ordering as shown by bus 106 is that for the little endian byte ordering byte 0 comprises the 8 least-significant bits while for the big endian byte ordering byte 0 comprises the 8 most-significant bits.
- the byte ordering is directly proportional to the bit ordering while for big endian byte ordering the byte and bit ordering are inversely proportional.
- the byte of information (A) appears at byte 1 along the bus 104.
- byte 1 comprises bits 8-15.
- the byte of information (A) also appears at the byte l position along the bus 106.
- byte 1 encompasses bits 16-23. Consequently, the little endian byte ordering and big endian byte ordering appear to have been "flipped" in this example.
- register 102 is shown to contain a half-word of information which is to be transmitted to bytes 0 and l of some component (not shown) across busses 104 and 106 for each respective computer system.
- the first byte in the register (information (A) ) appears at byte 0
- the second byte in the register (information (B) ) appears at byte 1.
- information (A) is transmitted across the 8 least-significant bits
- information (B) is transmitted across the 8 next least-significant bits (i.e. , bits 8-15) .
- Figure 3 discloses the effect of a word (in this example, 4 bytes) of information being transmitted across busses 104 and 106.
- a word in this example, 4 bytes
- the order of information in register 102 is the same as the order of information across bus 104 representing the little endian byte ordering.
- information (A) comprises the 8 least- significant bits in both register 102 and across bus 104.
- the byte ordering is typically of no concern to the average user or programmer in day-to-day operations. This is because when byte-sized information is written to a particular address, it can then typically be accessed at that same address. This is a fundamental principle without which computers would find it almost impossible to function.
- the byte ordering of a particular computer restricts the decisions that a user can make when deciding which types of software to buy. More specifically, operating systems are typically written for either one byte ordering or another. For example, Microsoft NT has been designed for use with little endian computer systems while the majority of Unix operating systems have been designed for big endian computer systems. Consequently, the type of operating system which a user wants to implement drives the decision for the type of computer system that the user can purchase. Looked at from another perspective, if a user has already purchased a computer, the options for purchase of an operating system are limited.
- a key step in designing a computer system which can execute software utilizing either big endian or little endian byte ordering is to design a processor that can operate in either a big endian or little endian mode.
- MIPS Computer Systems of Sunnyvale, California has designed a microprocessor (the R-4000) which is bi- endian (i.e., capable of operating in either a big endian and a little endian mode) . Consequently, operating systems using either big endian or little endian byte ordering can be executed using this microprocessor.
- a bi-endian processor 402 is shown operating in a big endian mode.
- byte 0 encompass the 8 most-significant bits.
- a single byte of information (A) is shown being transmitted across bus 404.
- a little endian component 406 This component could be, for example, a memory device.
- the bi-endian processor 402 transmits information (A) onto bus 404 at byte 0, a signal is also sent to the receiving component 406 at byte 0. If the receiving component 406 had a big endian byte ordering, then the transaction would have the expected results of enabling the portion of the component 406 that receives information (A) . However, in this example, byte 0 of the component 406 is enabled (i.e., receptive to information) , but information (A) is received at byte 3 (which is not enabled) .
- Another problem not adequately solved by the MIPs approach concerns the situation where information is transmitted to some external medium from a component having a first byte ordering and subsequently transmitted from that medium to another component having a second byte ordering. This problem is illustrated below with regard to Figures 5 and 6.
- Figure 5 discloses examples of how bytes of a word of information in a memory device should appear after the information is received from a big endian processor. More specifically, Figure 5 shows the byte order of a word of information in a big endian memory 506 and a little endian memory 512 after the information is received from a big endian processor 502. Note that the byte order of the information is the same for both memory devices even though the "significance" of the bytes is reversed (as discussed regarding Figure 3 above) . Also, note that the little endian memory 512 is able to receive the information from the big endian processor 502 only because an entire word of information is transmitted.
- FIG. 6 the byte ordering shown on medium 602 results from medium 602 having received information from big endian processor 502 (via some I/O device, not shown) of Figure 5.
- byte 0 of big endian memory 506 (which, here, is representative of a byte address and contains information (D) ) was written onto the medium 602 at location 0 and then bytes of increased significance were thereafter written to subsequent locations of medium 602. This represents the conventional way that information is written onto such media.
- the present invention overcomes the deficiencies of prior devices by providing a system and method for allowing components of different byte orderings to communicate information between each other in an effective manner, regardless of whether a single byte, half word, word (or other multiples thereof depending upon bus widths) are transferred.
- the present invention achieves these results in an elegant manner by providing embodiments for crossing over byte lines of information in a communications link (e.g., a bus) between components when the two components have different byte orderings. Some embodiments indicate that upon receipt of an indication that the two components have the same byte ordering, the byte lines cease crossing over.
- Some embodiments of the present invention contemplate use in existing systems, wherein one or more components having a different byte ordering than the rest of the computer system are inserted into the existing system. The present invention then allows these components of different byte ordering to communicate.
- Embodiments of the present invention also contemplate computer systems (and uses within computer systems) having a bi-endian processor, so that operating systems (and other computer programs) having either a big endian or a little endian byte ordering can be used.
- the present invention crosses over the byte lines when the present invention is communively between the computer program running on the bi-endian processor and components having a different byte ordering from the computer program. Where the components are of the same byte ordering as the computer program, the present invetion does not cross over the byte lines.
- Some embodiments of the present invention contemplate that once the the present invention is set during operation of an operating system, it is not reset (i.e., made to switch modes from crossing over to not crossing over, or vise versa) during operation.
- Other embodiments contemplate that the present invention can be dynamically reset depending upon the byte ordering of the computer program running at that time. In these latter embodiments, a computer program having a first byte ordering can call another computer program having a second byte ordering. That would necessitate the changing of the mode of the bi-endian processor as well as resetting whether the byte lines are crossed over or not.
- Figure 1 is a block diagram depicting the transfer of a single byte of information from a register to a component having a little endian byte ordering and to a component having a big endian byte ordering.
- Figure 2 is a block diagram depicting the transfer of a half word of information from a register to a component having a little endian byte ordering and to a component having a big endian byte ordering.
- Figure 3 is a block diagram depicting the transfer of a word of information from a register to a component having a little endian byte ordering and to a component having a big endian byte ordering.
- Figure 4 is a block diagram depicting the transfer of information between two components having different byte orderings.
- Figure 5 is a block diagram depicting the sequence of information written to a big endian memory and a little endian memory from a big endian processor.
- Figure 6 is a block diagram depicting the sequence of bytes written from a medium to a little endian memory and thereafter transmitted to a big endian processor.
- Figure 7A is a block diagram shows a conventional computer system using big endian components and a conventional computer system using little endian components.
- Figure 7B is a block diagram of a computer system contemplated by embodiments of the present invention having a little endian processor and big endian components, and a computer system contemplated by embodiments of the present invention having big endian processor and little endian components.
- Figure 8 is a block diagram of a computer system contemplated by embodiments of the present invention having a bi-endian processor with big endian components and a computer system contemplated by embodiments of the present invention having a bi-endian processor with little endian components.
- Figure 9 is a diagram depicting embodiments of the present invention in an active mode.
- Figure 10A is a diagram of a switch in an inactive mode as contemplated by embodiments of the present invention.
- Figure 10B is a switch in an active mode as contemplated by embodiments of the present invention.
- Figure 11 is a circuit diagram of a switch as contemplated by embodiments of the present invention.
- Figure 12A is a diagram depicting the use of switches in an inactive mode as contemplated by embodiments of the present invention.
- Figure 12B is a diagram depicting the use of switches in an active mode as contemplated by embodiments of the present invention.
- Figure 13 is a flow diagram of a method contemplated by embodiments of the present invention for swapping information.
- Figure 14 is an example of the operation of the present invention for transferring a single byte of information from a component having a first byte ordering to a component having a second byte ordering.
- Figure 15 is an example of the operation of the present invention for transferring a half word of information from a component having a first byte ordering to a component having a second byte ordering.
- Figure 16 is an example as contemplated by embodiments of the present invention for transferring information, originating from a component having a first byte ordering, from a medium to a component having a second byte ordering and then to a component having a first byte ordering.
- Figure 17 is a block diagram of embodiments of the present invention for dynamically switching between utilizing a computer program having a first byte ordering to utilizing a computer program having a second byte ordering.
- Figure 18 is a flow diagram of a method contemplated by embodiments of the present invention for dynamically changing the byte ordering of the processor to accommodate computer programs of varying byte ordering.
- This invention relates to a system and method for allowing a computer-related component having a first byte ordering to effectively communicate with a computer-related component having a second byte ordering.
- Embodiments of the present invention also envision a system and method for determining whether two components have the same byte ordering and then for making provisions to allow the two components to communicate with each other.
- embodiments of the present invention contemplate that these provisions allowing the two components to communicate with each other can be administered dynamically.
- the present invention utilizes an elegant scheme for overcoming the deficiencies of the prior devices.
- the present invention contemplates an information "swapping" scheme for allowing components having a first byte ordering to communicate with components having a second byte ordering. Even with all the intricacies discussed in the Background section above concerning byte management within the two byte ordering schemes and the complexities of facilitating interaction therebetween, the swapping scheme contemplated by the present invention achieves the desired results.
- this Figure depicts two conventional computer systems, each having a "master” and two “slave” components.
- these computer systems each comprise a processor (the “master"), a memory and an I/O device (the “slaves”).
- a computer system 702A comprises a big endian processor (e.g., a Motorola 68000) with a big endian memory and a big endian I/O.
- a computer system 704A comprises a little endian processor (e.g., an Intel 80486), a little endian memory and a little endian I/O.
- computer system 702B contains a big endian memory 712 and a big endian 1/0 714,. just as does computer system 702A of Figure 7A.
- a little endian processor 706 has replaced the big endian processor of computer system 702A.
- a swapper 708 is communicatively positioned between the little endian processor 706 and the other components of computer system 702B, including a bus 710. This swapper 708 allows information to be effectively communicated between the little endian processor 706 and big endian components such as big endian memory 712.
- the swapper 708 accomplishes the above-mentioned feat by "swapping" (i.e., switching around) bytes in a manner that will be described further below. It is noted here, however, the byte addresses of the various components are not modified and that the information is swapped by the swapper 708 as the information travels to its destination.
- a big endian processor 716 has replaced the little endian processor of computer system 704A.
- swapper 708 enables the big endian operating system and computer programs running on big endian processor 716 to communicate with a little endian memory 722 and a little endian 1/0 724.
- Embodiments of the present invention contemplate that the replacement the processor with one having the opposite byte ordering would likely require some modification of the processor interface into the computer system. Thus, some modification of the "glue logic" would be required. The implementation of such modifications would be apparent to one skilled in the art.
- any component (s) having a second byte ordering can be introduced into a computer system having components of a first byte ordering and can function in that computer system by using the swapper 708.
- Embodiments of the present invention also contemplate computer systems having a parallel processing architecture where each processor is in communication with a swapper 708.
- some embodiments of the present invention contemplate the use of a bi- endian processor such as the MIPS R-4000 discussed above. Since the R-4000 can operate in either a big endian mode or a little endian mode, an operating system (and any other computer program) of either big endian or little endian byte ordering can be utilized by this processor.
- a computer system 802 is shown with a bi-endian processor 806, big endian memory 712, big endian 1/0 714 and bus 710.
- a swapper 708 is in communication with bi-endian processor 806 and the other components of the computer system 802. If a big endian operating system is running on the bi-endian processor 806 (which itself would be configured in big endian mode) then the swapper 708 would be inactive (i.e., no byte swapping would occur) since all components in the computer system 802 have a big endian byte ordering.
- the swapper 708 would be active in order to allow information to effectively be used when passed between the little endian operating system and the big endian components of computer system 802.
- the same concept applies to computer system 804, where little endian components are used rather than big endian components.
- the bi- endian processor 806 is set in accordance with the byte ordering of a particular operating system and is not re-set during operation.
- Other embodiments of the present invention contemplate that the bi-endian processor 806 can be re-set dynamically during appropriate circumstances, such as where a big endian operation system calls a little endian software routine
- the swapper 708 would change its state (i.e., from active to inactive, or vise versa) at that time as well.
- the swapper 708 would change from inactive to active if a big endian operating system called a little endian software routine.
- Embodiments of the present invention contemplate that memory components of either byte ordering can be any type of computer memory device including DRAM's or CMOS. Some embodiments contemplate that the memory is controllable by such schemes as direct memory access. Embodiments of the present invention envision that the I/O components are interfaces (such as hard disk controllers or local area network controllers) to I/O devices.
- Embodiments of the present invention also contemplate that the swapper 708 can be an integral part of one or more components (such as a bus or memory device) of a computer system rather than a separate entity.
- FIG. 9 four lines (A, B, C and D) are shown passing through swapper 708 and crossing therein. Each of these lines is one byte in width. Although Figure 9 discloses four lines (hereafter referred to as "byte lines”) any number of byte lines are envisioned for use by various embodiments of the present invention.
- the outer-most byte lines (specifically, byte lines A and D) swap positions with each other.
- the inner-most byte lines (B and C) also swap positions with each other. If more byte lines were used, a similar pattern would emerge. For example, if two more byte lines existed, one between byte lines A and B and the other between C and D, these two byte lines would also swap position through swapper 708.
- the swapper 708 as shown in figure 9 is displayed in an "active" mode (i.e., the byte lines are swapped). As indicated above, the swapper 708 can also be set to an "inactive" mode, in which the byte lines are not swapped (i.e., it were as though there were no swapper).
- Some of the embodiments envisioned by the present invention for implementing the swapper 708 utilize one or more "switches.” Each of these switches connectively crosses over (i.e., swaps) two byte lines when the swapper is set to an "active" mode.
- An example of these switches can be seen from Figures 10A and 10B.
- the labeling of the byte lines for these Figures (as well as in Figures 11, 12A and 12B below) is related, for clarity, to the labeling of the byte lines in Figure 9.
- a switch 1002 is shown having byte lines A and D passing through it.
- a non-cross over signal e.g., a "0", as shown in Figure 10A, and indicative of "inactive mode” of the swapper 708
- switch 1002 is "inactive” and byte lines A and D are not swapped.
- a cross-over signal e.g., a "1”
- switch 1002 is "active” and byte lines A and D are swapped as shown by Figure 10B.
- the embodiments of the present invention contemplate that values other than those discussed in conjunction with Figures 10A and 10B can be used to indicate that switch 1002 is active or inactive.
- switch 1002 comprises 4 switches 1104 implemented as shown. These switches 1104 can be, for example, transistors. Also, an inverter 1102 is implemented as shown. In this particular example, when cross-over input 1004 is "low” (e.g., as represented by a digital "0") byte lines 1 and 2 are not swapped. If, however, cross-over input 1004 is "high” (e.g., as represented by a digital "1") then byte lines 1 and 2 are swapped.
- FIG. 12A An example of how the switch 1002 is used in swapper 708 as contemplated by embodiments of the present invention is now discussed with regard to Figures 12A and 12B.
- two switches (1002A and 1002B) are utilized in swapper 708. Since each switch controls 2 byte lines, swapper 708 thus provides for control of four bytes (i.e., 32 bits) of information (as also indicated by Figure 9 above) .
- byte line A comprises the 8 least significant bits (that is, bits 0-7) and byte line D comprises the 8 most significant bits (that is, bits 24-31) .
- These two byte lines share the same switch 1002A within swapper 708. In other words, it is these two byte lines that are swapped when a cross-over signal is received by cross-over input 1004.
- the remaining two byte lines that pass through swapper 708 (byte lines B and C) comprise bits 8-15 and bits 16-23, respectively, and share switch 1002B. It is contemplated that byte lines A-D on each side of swapper 708 are in communication with some component (not shown) each having a big endian or a little endian byte ordering.
- Figure 12A a non-cross over signal (in this case, a "0") is shown as being received by cross-over input 1004. Consequently, the byte lines are not swapped.
- Figure 12A thus represents the situation when both components on either side of swapper 708 have the same byte ordering. That is, both components with which the byte lines of swapper 708 are in communication have either a big endian or a little endian byte ordering.
- Figure 12B represents the situation when the components on either side of the swapper 708 do not have the same byte ordering. This is indicated by the fact that a cross-over input signal (in this case, a "1") is received by cross-over input 1004.
- switches 1002A and 1002B are "active" and swap byte lines as shown. Specifically, byte lines A and D are swapped and byte lines B and C are swapped. This has the effect discussed in conjunction with Figure 9 above. It should be noted that the cross-over input signal, in effect, acts as an indication that the source component (i.e., the component transmitting the information) has a byte ordering different from the target component.
- the combination of the two switches 1002A and 1002B comprising the swapper 708 of Figures 12A and 12B can be implemented using a product called "Quick Switch" (part number 74QST3383) made by Quality Semiconductor of Santa Clara, CA.
- the present invention also contemplates other schemes for implementing swapper 708, such as by the use of ASIC technology. These other schemes may or may not utilize "switches" (e.g., they might utilize muxes) .
- the present invention contemplates that the cross ⁇ over input signal can be generated as a result of various stimuli in order to notify the swapper 708 when the byte lines should be swapped. An example might be for the processor to write to some port address to which cross-over input 1004 is responsive. Whether or not the swapper 708 should be made active could be set interactively by a user or by storing an active/non- active setting in some non-volatile memory. In this way, the swapper 708 can be appropriately set based upon the byte ordering status of the components of the computer system.
- Figures 9, 12A and 12B sow the swapper 708 handling 4 bytes of information, it should be understood that this is only by way of example and that the present invention contemplates embodiments for swapping any number of bytes. Also, the present invention contemplates embodiments where the swapper 708 is perminently "active" where it is known that the components between which it communicateively resides will always be of a different byte ordering.
- the first step is to determine the byte ordering used by a first component within a computer system. This is indicated by a block 1302. Then, a determination is made of the byte ordering used by a second component (with which the first component communicates) . This is indicated by a block 1304.
- the swapper 708 must be activated. This is indicated by a block 1308. Once activated, communications between the first and second components may then commence, as indicated by block 1310.
- FIG 14. an example depicting a computer system having a big endian processor 1402 and a little endian memory 1406 is disclosed.
- information is transmitted via a four byte bus 1410 between the big endian processor 1402 and little endian memory 1406.
- the swapper 708 is shown in an "active" state (since the byte ordering of the two components is different) and is connected to bus 1410 between big endian processor 1402 and little endian memory 1406.
- a register 1408 contains a single byte of information (information (A) ) .
- information (A) is transmitted at byte 0 as shown. If there were no intervening swapper 708, information (A) would be received at byte 3 of little endian memory 1406 (which is not enabled to receive information) as described in Figure 4 in the Background section above. This is the result of standard protocols used with memory management schemes of computer systems contemplated for use in (and in environments used with) embodiments of the present invention.
- Information (A) is received by the byte address of the little endian memory (that is, byte 0) that is enabled.
- Figure 15 shows an example where a half-word (i.e., two bytes) of information is transmitted rather than the single byte discussed in conjunction with the previous Figure.
- information (A) and (B) are contemplated to reside in register 1408 as shown. This information is further contemplated to be transmitted onto bus 1410 via bus interface 1404, such that information (A) is transmitted at byte 0 and information (B) is transmitted at byte 1.
- bus widths of any number of bytes are contemplated and the concepts discussed above apply regardless of the number of bytes transmitted or to what byte locations (i.e., byte addresses) in the target component they are transmitted to.
- these examples show a big endian "master" component (in this case, a processor) in communication with a little endian slave component (in this case, memory) it should be understood that the present invention contemplates other combinations, including slave-to-slave and master-to-master combinations.
- the present invention also overcomes the problem described in Figures 5 and 6 in the Background section concerning receipt of information from a medium. An example of this is now described with regard to Figure 16.
- 'a medium 1602 (which can be any type of transportable medium such as a floppy disk, tape or even a local area network) is shown having received 4 bytes of information from a big endian component as discussed with regard to Figures 5 and 6 above.
- information (D) which was transmitted from byte 0 of the big endian component, is shown at location 0 of medium 1602.
- Information (C) is shown at location 1, etc.
- the byte order of the information is the same as shown by the little endian memory 604 of Figure 6.
- the information in little endian memory 604 cannot, as is, be used by big endian processor 606.
- the information needs to be in the format it was originally generated in (which is the format shown by big endian processor 502 and big endian memory 506 in Figure 5) .
- the swapper 708 as contemplated by embodiments of the present invention, allows big endian processor 1402 to receive and use the information from the little endian memory 1406.
- swapper 708 swaps the information so that, for example, information (D) (which is transmitted at byte 0 from little endian memory 1406) is received at byte 0 of the big endian processor 1402 rather than at byte 3 as occurred in the example of Figure 6.
- information received by big endian processor 1402 as a result of the swapper 708 is in the format which the information was originally transmitted by the big endian processor 502 of Figure 5. In this way, it is not necessary to "swap" the information while it resides in memory, thus saving considerable time.
- Embodiments of the present invention contemplate that an I/O component (not shown) is used to facilitate transmition of information between medium 1602 and little endian memory 1406.
- I/O component (not shown) is used to facilitate transmition of information between medium 1602 and little endian memory 1406.
- 1/0 components contemplated for use by embodiments of the present invention as described above envision that information is transmitted (as between other components) to and from the I/O components in a byte-wide fashion. If information is transmitted using parallel methods
- the information needs to be swapped prior to transmitting or receiving information to or from the I/O component.
- Some embodiments of the present invention contemplate that taking care of parallel methods can be done using a device driver which swaps the data prior to writing it to (or reading it from) the I/O component. Design and implementation of such a device driver would be known to one skilled in the art.
- an additional swapper 708 can instead be placed in communication between the I/O component and the rest of the computer system.
- the byte ordering mode of a bi- endian processor used in a computer system envisioned by various embodiments of the present invention can be changed dynamically so that, in conjunction with the swapper 708, software routines having a byte ordering different from the byte ordering of the operating system can be used.
- An example of such a scheme is shown by Figure 17.
- a bi-endian processor 1708 is contemplated to be initially configured in a first byte ordering mode (i.e., either big endian or little endian) and is operating using an operating system (not shown) having a first byte ordering.
- a computer program 1704 within a memory 1702, both of which have the first byte ordering, can consequently be accessed and run by the bi-endian processor 1708 without the need to use swapper 708 (i.e., swapper 708 is "inactive," and the byte lines are not swapped) .
- the bi-endian processor 1708 switches its byte ordering mode to the second byte ordering mode to accommodate this software routine 1706.
- the swapper 708 becomes active (i.e., it is reset to an active mode) . Consequently, the byte lines within the swapper 708 will swap the bytes of information as discussed above.
- software routine 1706 then is received by the bi-endian processor 1708. Upon completion of execution (or if the software routine 1706 itself called another software routine having a first byte ordering) the bi- endian processor 1708 and swapper 708 revert back to their initial state.
- Embodiments of the present invention contemplate that instructions exist within computer program 1702 in conjunction with the call to software routine 1706 to set the bi-endian processor 1708 and swapper 708 to a different state.
- the present invention also contemplates embodiments where the state can be set in other ways.
- Figure 18 depicts embodiments of a method of operation of the present invention.
- the first step is that computer program 1704 is executed in bi-endian processor 1708 running in a first byte ordering mode. This is indicated by a block 1802.
- the computer program 1704 then calls a software routine 1706 configured to execute in a second byte ordering mode. This is indicated by a block 1804.
- the next step is to reconfigure the bi-endian processor 1708 and swapper 708 to run in a second byte ordering mode. That is, the byte ordering of the bi- endian processor 1708 is switched and the swapper 708 is made active. This is indicated by a block 1806.
- the software routine 1706 is loaded and executed in the bi-endian processor 1708, as indicated by a block 1808.
Abstract
Description
Claims
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6515373A JPH07505972A (en) | 1992-12-21 | 1993-12-17 | Apparatus, system and method for facilitating communication between elements with different byte orders |
EP94905455A EP0629303A1 (en) | 1992-12-21 | 1993-12-17 | Apparatus, system and method for facilitating communication between components having different byte orderings |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US99440592A | 1992-12-21 | 1992-12-21 | |
US07/994,405 | 1992-12-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO1994015269A2 true WO1994015269A2 (en) | 1994-07-07 |
WO1994015269A3 WO1994015269A3 (en) | 1994-11-24 |
Family
ID=25540637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1993/012416 WO1994015269A2 (en) | 1992-12-21 | 1993-12-17 | Apparatus, system and method for facilitating communication between components having different byte orderings |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0629303A1 (en) |
JP (1) | JPH07505972A (en) |
WO (1) | WO1994015269A2 (en) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0729094A1 (en) * | 1995-02-24 | 1996-08-28 | International Business Machines Corporation | A mixed-endian computing environment for a conventional bi-endian computer system |
EP0729093A1 (en) * | 1995-02-24 | 1996-08-28 | International Business Machines Corporation | A mixed-endian computer system |
EP0751655A2 (en) * | 1995-06-30 | 1997-01-02 | Thomson Consumer Electronics, Inc. | Multimedia transmission system |
WO1997014101A1 (en) * | 1995-10-10 | 1997-04-17 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
EP0695998A3 (en) * | 1994-08-02 | 1997-07-09 | Motorola Inc | Interbus buffer |
WO1997044739A1 (en) * | 1996-05-23 | 1997-11-27 | Advanced Micro Devices, Inc. | Apparatus for converting data between different endian formats and system and method employing same |
FR2795573A1 (en) * | 1999-06-25 | 2000-12-29 | Inst Nat Rech Inf Automat | Device for managing data exchange between data processing equipment has operating unit (8) receives a primary data and the first and second words of symbols |
US6351750B1 (en) * | 1998-10-16 | 2002-02-26 | Softbook Press, Inc. | Dynamic conversion of byte ordering for use on different processor platforms |
EP2177987A1 (en) * | 2008-10-17 | 2010-04-21 | Alcatel Lucent | A method for handling different types of data, corresponding device, storage means, and software program therefore |
US10025555B2 (en) | 2016-08-31 | 2018-07-17 | Mettler-Toledo, LLC | Byte order detection for control system data exchange |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0282969A2 (en) * | 1987-03-18 | 1988-09-21 | Hitachi, Ltd. | Computer system having byte sequence conversion mechanism |
EP0470570A2 (en) * | 1990-08-09 | 1992-02-12 | Silicon Graphics, Inc. | Method and apparatus for byte order switching in a computer |
US5107415A (en) * | 1988-10-24 | 1992-04-21 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor which automatically rearranges the data order of the transferred data based on predetermined order |
-
1993
- 1993-12-17 JP JP6515373A patent/JPH07505972A/en active Pending
- 1993-12-17 EP EP94905455A patent/EP0629303A1/en not_active Withdrawn
- 1993-12-17 WO PCT/US1993/012416 patent/WO1994015269A2/en not_active Application Discontinuation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0282969A2 (en) * | 1987-03-18 | 1988-09-21 | Hitachi, Ltd. | Computer system having byte sequence conversion mechanism |
US5107415A (en) * | 1988-10-24 | 1992-04-21 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor which automatically rearranges the data order of the transferred data based on predetermined order |
EP0470570A2 (en) * | 1990-08-09 | 1992-02-12 | Silicon Graphics, Inc. | Method and apparatus for byte order switching in a computer |
Non-Patent Citations (2)
Title |
---|
38TH ANNUAL IEEE COMPUTER SOCIETY INTERNATIONAL COMPUTER CONFERENCE - COMPCON SPRING '93, 22-26 FEB 1993 SAN FRANCISCO, CA, USA, 1993, IEEE, PISCATAWAY, USA. pages 441 - 447 P. KNEBEL ET AL. 'HP's PA7100LC: a low-cost superscalar PA-RISC processor' * |
IEEE MICRO, vol.3, no.4, August 1983, NEW YORK US pages 32 - 47 H. KIRRMANN 'Data Format and Bus Compatibility in Multiprocessors' * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0695998A3 (en) * | 1994-08-02 | 1997-07-09 | Motorola Inc | Interbus buffer |
US5968164A (en) * | 1995-02-24 | 1999-10-19 | International Business Machines Corporation | Mixed-endian computing environment for a conventional bi-endian computer system |
EP0729094A1 (en) * | 1995-02-24 | 1996-08-28 | International Business Machines Corporation | A mixed-endian computing environment for a conventional bi-endian computer system |
US5928349A (en) * | 1995-02-24 | 1999-07-27 | International Business Machines Corporation | Mixed-endian computing environment for a conventional bi-endian computer system |
US5687337A (en) * | 1995-02-24 | 1997-11-11 | International Business Machines Corporation | Mixed-endian computer system |
US6341345B1 (en) | 1995-02-24 | 2002-01-22 | International Business Machines Corporation | Mixed-endian computer system that provides cross-endian data sharing |
EP0729093A1 (en) * | 1995-02-24 | 1996-08-28 | International Business Machines Corporation | A mixed-endian computer system |
EP0751655A3 (en) * | 1995-06-30 | 1999-03-24 | Thomson Consumer Electronics, Inc. | Multimedia transmission system |
EP0751655A2 (en) * | 1995-06-30 | 1997-01-02 | Thomson Consumer Electronics, Inc. | Multimedia transmission system |
US5778406A (en) * | 1995-06-30 | 1998-07-07 | Thomson Consumer Electronics, Inc. | Apparatus for delivering CPU independent data for little and big endian machines |
US5819117A (en) * | 1995-10-10 | 1998-10-06 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
WO1997014101A1 (en) * | 1995-10-10 | 1997-04-17 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
WO1997044739A1 (en) * | 1996-05-23 | 1997-11-27 | Advanced Micro Devices, Inc. | Apparatus for converting data between different endian formats and system and method employing same |
US5867690A (en) * | 1996-05-23 | 1999-02-02 | Advanced Micro Devices, Inc. | Apparatus for converting data between different endian formats and system and method employing same |
US6351750B1 (en) * | 1998-10-16 | 2002-02-26 | Softbook Press, Inc. | Dynamic conversion of byte ordering for use on different processor platforms |
FR2795573A1 (en) * | 1999-06-25 | 2000-12-29 | Inst Nat Rech Inf Automat | Device for managing data exchange between data processing equipment has operating unit (8) receives a primary data and the first and second words of symbols |
WO2001001265A1 (en) * | 1999-06-25 | 2001-01-04 | Inria Institut National De Recherche En Informatique Et En Automatique | Device for managing data exchanges between data processing equipment |
EP2177987A1 (en) * | 2008-10-17 | 2010-04-21 | Alcatel Lucent | A method for handling different types of data, corresponding device, storage means, and software program therefore |
US10025555B2 (en) | 2016-08-31 | 2018-07-17 | Mettler-Toledo, LLC | Byte order detection for control system data exchange |
Also Published As
Publication number | Publication date |
---|---|
JPH07505972A (en) | 1995-06-29 |
WO1994015269A3 (en) | 1994-11-24 |
EP0629303A1 (en) | 1994-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7664909B2 (en) | Method and apparatus for a shared I/O serial ATA controller | |
US5444853A (en) | System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's | |
US5809262A (en) | Commonly housed multiple processor type computing system and method of manufacturing the same | |
US6785746B1 (en) | Dual-channel SCSI chips and methods for configuring separate interoperability of each channel of the SCSI chip | |
EP0827609B1 (en) | Add-in board with enable/disable expansion rom for pci bus computers and corrresponding interface | |
US5101498A (en) | Pin selectable multi-mode processor | |
EP1422626B1 (en) | Multi-core communications module, data communications system incorporating a multi-core communications module, and data communications process | |
WO1997014101A1 (en) | Method and system for facilitating byte ordering interfacing of a computer system | |
US5922062A (en) | Combined IDE and SCSI disk controller interface for common hardware reference platforms | |
JPS6126103B2 (en) | ||
EP0836724A1 (en) | Add-in board with programmable configuration registers for pci bus computers | |
US5675772A (en) | Device and method for reconfiguring a computer system with an incompatible CPU | |
JPH05265919A (en) | Method and device for dynamically constituting device driver of removable computer device resource | |
US5960212A (en) | Universal input/output controller having a unique coprocessor architecture | |
WO1994015269A2 (en) | Apparatus, system and method for facilitating communication between components having different byte orderings | |
US5146605A (en) | Direct control facility for multiprocessor network | |
US5732283A (en) | System and method of providing universal support for multiple pointing devices | |
AU603876B2 (en) | Multiple i/o bus virtual broadcast of programmed i/o instructions | |
US6105080A (en) | Host adapter DMA controller with automated host reply capability | |
US20070245043A1 (en) | FIFO system and operating method thereof | |
JP3431941B2 (en) | Method and apparatus for determining instruction execution order in a data processing system | |
EP0614137B1 (en) | Data processing system providing an extensible register and method thereof | |
JPH04358252A (en) | Workstation and consituting method thereof | |
US5809333A (en) | System for implementing peripheral device bus mastering in desktop PC via hardware state machine for programming DMA controller, generating command signals and receiving completion status | |
EP0259659A2 (en) | A data processing machine including an adapter card driver mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): JP |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1994905455 Country of ref document: EP |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
AK | Designated states |
Kind code of ref document: A3 Designated state(s): JP |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE |
|
WWP | Wipo information: published in national office |
Ref document number: 1994905455 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1994905455 Country of ref document: EP |