WO2001038974A1 - Method and apparatus for extracting and depositing a string of bits from a source into a destination - Google Patents

Method and apparatus for extracting and depositing a string of bits from a source into a destination Download PDF

Info

Publication number
WO2001038974A1
WO2001038974A1 PCT/US2000/032066 US0032066W WO0138974A1 WO 2001038974 A1 WO2001038974 A1 WO 2001038974A1 US 0032066 W US0032066 W US 0032066W WO 0138974 A1 WO0138974 A1 WO 0138974A1
Authority
WO
WIPO (PCT)
Prior art keywords
string
bit
logical
destination
bits
Prior art date
Application number
PCT/US2000/032066
Other languages
French (fr)
Inventor
David James
Jung-Jen Liu
Original Assignee
Sony Electronics Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Electronics Inc. filed Critical Sony Electronics Inc.
Priority to AU17894/01A priority Critical patent/AU1789401A/en
Publication of WO2001038974A1 publication Critical patent/WO2001038974A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE

Definitions

  • the present invention relates to the field of computer systems. More particularly, the present invention relates to instructions used to move data within a string from one location to another.
  • the IEEE standard "IEEE 1394 Standard For A High Performance Serial Bus,” Draft ratified in 1995, is an international standard for implementing an inexpensive high-speed serial bus architecture which supports both asynchronous and isochronous format data transfers.
  • Isochronous data transfers are real-time transfers which deliver data on time without guaranteeing the integrity of the data.
  • Each packet of data transferred isochronously is transferred in its own time period.
  • the IEEE 1394-1995 standard bus architecture provides up to sixty- four (64) channels for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure.
  • Asynchronous transfers are traditional data transfer operations which guarantee the integrity of the data during delivery using an acknowledgement protocol.
  • the IEEE 1394-1995 standard provides a high-speed serial bus for interconnecting digital devices thereby providing a universal I/O connection.
  • the IEEE 1394-1995 standard defines a digital interface for the applications thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus.
  • a receiving application will receive digital data from the bus, not analog data, and will therefore not be required to convert analog data to digital data.
  • Devices can be added and removed from an IEEE 1394-1995 bus while the bus is active. If a device is so added or removed the bus will then automatically reconfigure itself for transmitting data between the then existing nodes.
  • a node is considered a logical entity with a unique identification number on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
  • the IEEE 1394-1995 standard provides for up to sixty- four different isochronous channels to be used within an IEEE 1394-1995 network of devices.
  • certain 1394 devices are being built with the capability to only transmit and receive isochronous data over a subset of less than sixty- four channels.
  • This processing includes any or all of displaying, manipulating, forwarding and storing.
  • data received on different isochronous channels is processed differently, depending on the type of device from which the data is received, the type of data that is received and the desired use of the data. If data received on an isochronous channel is not received and processed efficiently, errors in the display or use of the data can result.
  • FIG. 1A A basic structure of a computer system is shown in Figure 1A.
  • the heart of the computer system 1 is a central processing unit ("CPU") 2.
  • CPU central processing unit
  • RAM random access memory
  • Data storage devices 5 include hard drives, floppy drives, and CD- ROMs.
  • I/O Input/output
  • a keyboard 9 is also coupled to the CPU 2 through one of the ports 3.
  • Ports 3, both serial or parallel, are used to connect the computer system 1 to modems, printers, and other devices, including other computer systems.
  • Figure IB illustrates a computer system 1 coupled to a display monitor 8 and networked to an IEEE 1394-1995 device 10, such as a video camera, through an IEEE 1394-1995 serial cable 11.
  • firmware 4 is used to seek out and load an operating system from one of the data storage devices 5 (usually the hard drive) when the computer system 1 is first turned on.
  • Programs and applications used by the computer system 1 are generally stored on the hard drive and moved at least in part to the RAM 6 during use.
  • Common CPUs 2 included within a computer system 1 include reduced instruction set computation (“RISC”) processors or complex instruction set computation (“CISC”) processors. Examples of RISC processors are the PowerPCTM processor manufactured by International Business Machines Corporation and the G3 processor manufactured by Motorola Corporation for Apple Computer Corporation personal computers. Examples of CISC processors are the model 80x86 processor and the PentiumTM processor, which are both available from Intel Corporation of Santa Clara, California.
  • a CPU 2 stores data in internal memory locations, registers, and memory. Registers are used during program execution to temporarily store intermediate results. The advantage of storing data in a register instead of a memory location is that the data within the register can be accessed much faster. Data that is not used during register operation is stored in memory.
  • Memory associated with a processor (“associated memory") is typically located within the CPU 2 itself as LI cache, nearby the CPU 2 as L2 cache, or in an area separate from the CPU 2.
  • the location in which data is stored in the registers and memory is identified by an address.
  • a read operation is used to access data found at a specific address.
  • a write operation is used to store data at a specific address. Writing a value to a specific address will erase the value previously found at that address.
  • Instructions are statements specifying an operation to be performed and what data operands are to be processed by the computer system.
  • a queue of pre-selected and sequenced instructions make up each computer program.
  • Each instruction includes an operation code ("opcode") and operands.
  • opcode is the part of the instruction that identifies the operation to be performed. Typical operations are ADD, SUBTRACT, and MOVE.
  • Operands describe the data to be processed as the operation specified by the opcode is carried out.
  • the instruction's operands may be an address location or actual data. Placing actual data within the instruction typically results in faster execution of the instruction. Limitation in the instruction's size, however, usually dictates that most operands are address locations for data stored in memory or registers.
  • a collection of instructions to be used by a particular computer system 1 are referred to as an instruction set.
  • the instructions are of uniform length.
  • x86 x86
  • CISC processors the length of instructions varies widely.
  • the minimum instruction consists of a single opcode byte and is 8 bits long.
  • a long instruction that includes a prefix byte is as long as 104 bits. Longer instructions containing more than a single prefix byte are also possible.
  • One common instruction completed by the CPU 2 is a shift instruction. Shifting is the process of moving data that is stored in a storage device relative to the boundaries of the device, as opposed to moving data in or out of the device.
  • the storage device is often a register designed specifically for shifting ("shift register"). The direction of the shift is either left or right. Vacated bit positions (on the leftmost for shift right operations and on the rightmost for shift left operations) are filled with logical ZEROs. Shift operations are often used in field alignments, packing and unpacking of data items into storage units, and highspeed multiplication and division. Simple shift registers shift data only one space per shift. More advanced shift registers shift data any arbitrary number of spaces per individual shift.
  • Rotation differs from shifting in that, in a left shift operation, a bit rotated out from the left is placed back into the vacated rightmost bit position. Similarly, in a right shift operation, a bit rotated out from the right is placed back into the vacated leftmost bit position. Otherwise shift and rotate operations are identical.
  • Masking is used to extract desired information from a storage unit while suppressing the undesired information.
  • desired information from a storage unit while suppressing the undesired information.
  • 8 least significant bits of the 16 bit string are extracted from the original register bit string:
  • a bitwise logical AND operation is performed with the register bit string and the mask bit string. Where the value of the mask bit is logical ONE, the corresponding register bit is retained in the bit string result. Where the value of the mask bit is logical ZERO, the register bit is suppressed.
  • the mask bit string is generated during the execution of the instruction from data included within the instruction.
  • a masking operation is used in combination with bit string read operations, shift registers, bitwise logic operations, and bit string write operations to deposit a string of bits into a specific memory or register location.
  • An extract function is a form of a mask operation.
  • an extract function For a source bit string S, a destination bit string D, and a mask bit string Mask, an extract function performs a bitwise logical AND operation with the source bit string S and the mask bit string Mask, then places the bit string result into the destination bit string D.
  • boolean algebra the equation reads:
  • Mask bit strings usually follow predictable patterns. First, the logical ONEs of the mask are typically grouped together. Second, the mask is typically right justified or left justified. Below are examples of 16 bit mask strings.
  • mask bit strings can be defined in fewer bits than their full length. Defining the mask in fewer bits allows instructions sets to save space within the masking instruction. The cost of saved space, however, is that an additional decoding step is required to generate the mask.
  • the method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string of the present invention is an improved implementation of deposit and extract instructions wherein the instruction contains an opcode, a source address, a destination address, a shift number, and a K-bit mask string.
  • the opcode describes the operations to be performed upon a J-bit source string and an N-bit destination string.
  • the source address points to the register in the CPU or the location of the J-bit source string.
  • the destination address points to the register in the CPU or the location of the N-bit destination string.
  • the shift number indicates the number of bits the J-bit source string will be shifted to generate a shifted bit string.
  • the combination of the shifted bit string with the N-bit destination string is conducted under the control of the K-bit mask string.
  • the method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string of the present invention is particularly useful for high speed digital data processing, such as that required by IEEE 1394-1995 compliant devices.
  • An instruction includes an opcode, a source address, a destination address, a shift number, and a mask bit string.
  • the opcode describes the operations to be performed upon a particular source bit string and destination bit string.
  • the operations include an extract left instruction, an extract right instruction, a deposit left instruction, and a deposit right instruction.
  • the source address points to the register in the CPU or the location of the source bit string.
  • the destination address points to the register in the CPU or the location of the destination bit string.
  • the shift number indicates the number of bits the source bit string is to be shifted to generate a shifted bit string.
  • the direction of shift is dictated by the shift value or the opcode.
  • the combination of the shifted bit string with the destination bit string is conducted under the control of a mask bit string.
  • the more specific implementations of the present invention are the extract and deposit instructions.
  • the deposit instruction also begins with an instruction comprising an opcode, a source address, a destination address, a shift value, and a K-bit mask bit string.
  • the CPU first reads a J-bit source string located at the source address and an N-bit destination string located at the destination address.
  • the CPU shifts the J-bit source string as determined by the shift number and the opcode to obtain a shifted bit string.
  • the CPU then combines the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N-bit final string, such that: (i) individual bits of the shifted bit string are included in the N-bit final string where the corresponding individual bits of the K-bit mask string have a value equal to logical ONE; and individual bits of the N-bit destination string are included in the N-bit final string where the co ⁇ esponding individual bits of the K-bit mask string have a value equal to logical ZERO.
  • the CPU writes the N-bit final string to the destination address.
  • the numeric values of J, K, and N are equal.
  • the combination step is performed by the following steps: (i) performing a logical AND operation of the shifted bit string and the K-bit mask string to obtain a first bit string; (ii) performing a logical AND operation of the N-bit destination string and the logical complement of the K-bit mask string to obtain a second bit string; and (iii) performing a logical OR operation of the first bit string and the second bit string to obtain the
  • N-bit final string N-bit final string.
  • the processing steps are performed by an embedded stream processor and the registers within the embedded stream processor contain the source address and the destination address.
  • the extract instruction begins with an instruction comprising an opcode, a source address, a destination address, a shift number, and a K-bit mask string.
  • the CPU or equivalent means first reads a J-bit source string located at the source address.
  • the CPU shifts the J-bit source string as determined by the shift number and the opcode to obtain a shifted bit string.
  • the CPU then combines the shifted bit string and the K-bit mask string to obtain an N-bit final string, such that: (i) individual bits of the shifted bit string are included in the N-bit final string where the corresponding individual bits of the K- bit mask string have a value of logical ONE; and (ii) remaining individual bits of the N-bit final string have a value of logical ZERO.
  • the CPU writes the N-bit final string to the destination address.
  • the numeric values of J, K, and N are equal.
  • the combination step is accomplished by performing a bitwise logical AND operation with the shifted bit string and the K-bit mask string.
  • the processing steps are performed by an embedded stream processor and the registers within the embedded stream processor contain the source address and the destination address.
  • Figure 1A illustrates a block diagram showing the basic components of an exemplary computer system.
  • Figure IB shows a computer system networked to an IEEE 1394-1995 device through an IEEE 1394-1995 serial cable.
  • Figures 2A through 2E show different combinations of source bit strings and destination bit strings.
  • Figure 3 shows a format of the deposit and extract instructions according to the preferred embodiment of the present invention.
  • Figure 4 shows a block diagram of a circuit for completing an extract left instruction according to the preferred embodiment of the present invention.
  • Figure 5 shows a block diagram of a circuit for completing an extract right instruction according to the preferred embodiment of the present invention.
  • Figure 6 shows a block diagram of a circuit for completing a deposit left instruction according to the preferred embodiment of the present invention.
  • Figure 7 shows a block diagram of a circuit for completing a deposit right instruction.
  • Figure 8 illustrates a block diagram showing the basic components of an exemplary computer system with an IEEE 1394-1995 interface circuit and attached IEEE 1394-1995 devices.
  • the method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string of the present invention preferably include the mask bit string within the deposit and extract instructions, thereby eliminating a mask generation step during the execution of the instruction.
  • Figures 2A through 2E illustrate possible combinations of a source bit string, from which a string of bits is extracted, and a destination bit string, to which a string of bits is deposited.
  • the section L within the source bit string represents the bits selected for extraction.
  • the section M within the destination bit string represents the bits to be replaced by the section L bits extracted from the source bit string.
  • the bits designated by "s" in the source bit string represent bits that are removed by masking during an extract instruction.
  • the bits designated by "d” in the destination bit string represent bits that are either zeroed out if the operands are subjected to an extract instruction or that will remain if the operands are subjected to a deposit instruction.
  • the designation "X" represents the number of bits to the right of the section L in the source bit string.
  • the designation "Y" represents the number of bits to the right of the section M in the destination bit string.
  • the value of X in the source bit string 60 and the value of Y in the destination bit string 72 are both greater than zero. In this example, the value of Y is also greater than the value of X.
  • the value of X in the source bit string 62 and the value of Y in the destination bit string 74 are both equal to zero.
  • the value of X in the source bit string 64 is equal to zero and the value of Y in the destination bit string 76 is greater than zero.
  • the value of X in the source bit string 66 is greater than zero and the value of Y in the destination bit string 78 is equal to zero.
  • the value of X in the source bit string 68 and the value of Y in the destination bit string 80 are both greater than zero. In this example, the value of X is also greater than the value of Y.
  • the direction of the shifting step in an extract or deposit instruction is determined by the relative positions of the section L in the source bit string and the section M in the destination bit string.
  • the section M is located to the left of the section L. To move the bits within the section L to the location within the section
  • the magnitude of each shift operation is determined by the difference between the X and Y values.
  • the shift value is the absolute value of the difference between the X and Y values.
  • the shift value is a signed number and the sign of the shift value determines the shift direction.
  • the instruction format of the preferred embodiment is illustrated in Figure 3.
  • the instruction 20 is preferably 64 bits wide.
  • the prefe ⁇ ed format of the instruction 20 is set forth below in Table I. TABLE I: Instruction Format
  • the opcode 21 is located within the six most significant bits of the instruction 20 and informs the processor which operation is to be performed.
  • the source address 22 is located within the next eight most significant bits and specifies the location for the source bit string.
  • the destination address 23 is located within the next eight most significant bits and specifies the location of the destination bit string.
  • the shift value 24 is located within the next six most significant bits and represents the number of bits the source bit string must be shifted to properly place the section L of the source bit string into the section M of the destination bit string. The shift value 24 is not an address.
  • the mask bit string 25 is located within the thirty- four least significant bits of the instruction 20 and is similar to the source bit string and the destination bit string in that it contains 34 bits and the two most significant bits are flag bits.
  • the flag bits indicate first whether the value in the source address 22 is a data packet header and second whether there is another packet that will be sent that is related to the present packet.
  • the mask bit string 25 is located within the instruction 20. Like the shift value 24, the mask bit string 25 is generated prior to the execution of the instruction 20.
  • the length of the source bit string, the destination bit string, and the mask bit string 25 can be of different lengths.
  • the direction of the shift operation is dictated by the opcode 21.
  • the extract left instruction for example, has a different opcode 21 than the extract right instruction.
  • the shift direction is included in the shift value 24.
  • the difference between a left shift versus a right shift is encoded in the shift value 24 by use of a flag bit or use of signed numbers.
  • FIG. 4 A block diagram of a circuit for implementing an extract left instruction is illustrated in Figure 4.
  • an extract left source address 112 from the instruction 20 is loaded into a source register 26.
  • a J-bit source string 27 located at the extract left source address is then loaded into a shift register 28 from the source register 26.
  • An extract left shift value 114 from the instruction 20 and an extract left opcode 1 10 from the instruction 20 are also loaded into the shift register 28. Taking the left shift direction from the extract left opcode 110 and the amount of shift from the extract left shift value 114, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to a logical AND gate 115.
  • An extract left K-bit mask string 1 16 from the instruction 20 is also provided as an input to the logical AND gate 115.
  • the logical AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 116 and provides an N-bit final string 30 as an output.
  • the N-bit final string 30 is provided from the logical AND gate 115 to the destination register 31.
  • a destination register 31 writes the N-bit final string 30 to an extract left destination address 118 dictated by the instruction 20.
  • FIG. 5 A block diagram of a circuit for implementing an extract right instruction is illustrated in Figure 5.
  • an extract right source address 122 from the instruction 20 is loaded into the source register 26.
  • a J-bit source string 27 located at the extract right source address 122 is then loaded into a shift register 28 from the source register 26.
  • An extract right shift value 124 from the instruction 20 and an extract right opcode 120 from the instruction 20 are also loaded into the shift register 28. Taking the right shift direction from the extract right opcode and the amount of shift from the extract right shift value 124, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to the logical AND gate 1 15.
  • An extract right K-bit mask string 126 from the instruction 20 is also provided as an input to the logical AND gate 115.
  • AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 126 and provides an N-bit final string 30 as an output.
  • the N-bit final string 30 is provided from the logical AND gate 115 to the destination register 31.
  • the destination register 31 writes the N-bit final string 30 to an extract right destination address 128 dictated by the instruction 20.
  • FIG. 6 A block diagram of a circuit for implementing a deposit left instruction is illustrated in Figure 6.
  • a deposit left source address 132 from the instruction 20 is loaded into the source register 26.
  • a J-bit source string 27 located at the deposit left source address 132 is then loaded into a shift register 28 from the source register 26.
  • a deposit left shift value 136 and deposit left opcode 130 from the instruction 20 are also loaded into the shift register 28. Taking the left shift direction from the deposit left opcode 130 and the amount of shift from the deposit left shift value 136, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to the logical AND gate 115.
  • a deposit left K-bit mask string 138 from the instruction 20 is also provided as an input to the logical AND gate 115.
  • the logical AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 138 and provides a first bit string 32 as an output.
  • the first bit string 32 is provided from the logical AND gate 115 as an input to the logical OR gate 117.
  • a deposit left destination address 134 from the instruction 20 is loaded into a destination register 34 and a destination register 31.
  • the destination register 34 receives the deposit left destination address 134 from the instruction 20 and reads the N-bit destination string 35 located at the deposit left destination address 134.
  • the N-bit destination string 35 is provided as an input to a logical AND gate 119.
  • the deposit left K-bit mask string 138 from the instruction 20 is provided as an input to an inverter circuit 121.
  • the inverter circuit 121 inverts the bits within the deposit left K-bit mask string 138.
  • the bitwise complement 36 of the deposit left K-bit mask string 138 is provided as an output from the inverter circuit 121 to the logical AND gate 119 as an input.
  • the logical AND gate 119 performs a logical AND operation on the N-bit destination string 35 and the bitwise complement 36 and provides a second bit string 33 as an output.
  • the second bit string 33 is provided from the logical AND gate 119 as an input to the logical OR gate 117.
  • the logical OR gate 117 performs a logical OR operation on the first bit string 32 and the second bit string 33 and provides an N-bit final string 30 as an output.
  • the N-bit final string 30 is provided from the logical OR gate 117 to the destination register 31.
  • the destination register 31 writes the N-bit final string 30 to a deposit left destination address 134 dictated by the instruction 20.
  • a block diagram of a circuit for implementing a deposit right instruction is illustrated in Figure 7.
  • a deposit right source address 152 from the instruction 20 is loaded into the source register 26.
  • a J-bit source string 27 located at the deposit right source address 152 is then loaded into a shift register 28 from the source register 26.
  • a deposit right shift value 156 and deposit right opcode 150 from the instruction 20 are also loaded into the shift register 28. Taking the right shift direction from the deposit right opcode
  • the shift register 28 then produces a shifted bit string 29.
  • This shifted bit string 29 is then provided as an input to the logical AND gate 115.
  • a deposit right K-bit mask string 158 from the instruction is also provided as an input to the logical AND gate 115.
  • the logical AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 158 and provides a first bit string 32 as an output.
  • the first bit string 32 is provided from the logical AND gate 115 as an input to a logical OR gate 117.
  • a deposit right destination address 154 from the instruction 20 is loaded into the destination register 34 and a destination register 31.
  • the destination register 34 receives the deposit right destination address 154 from the instruction 20 and reads the N-bit destination string 35 located at the deposit right destination address 154.
  • the N-bit destination string 35 is provided as an input to a logical AND gate 119.
  • the deposit right K-bit mask string 158 from the instruction 20 is provided as an input to an inverter circuit 121.
  • the inverter circuit 121 inverts the bits within the deposit right K-bit mask string 158.
  • the bitwise complement 36 of the deposit right K-bit mask string 158 is provided as an output from the inverter circuit
  • the logical AND gate 119 performs a logical AND operation on the N-bit destination string 35 and the bitwise complement 36 and provides a second bit string 33 as an output.
  • the second bit string 33 is provided from the logical AND gate 119 as an input to the logical OR gate 117.
  • the logical OR gate 117 performs a logical OR operation on the first bit string 32 and the second bit string 33 and provides an N-bit final string 30 as an output.
  • the N-bit final string 30 is provided from the logical OR gate 117 to the destination register 31.
  • the destination register 31 writes the N-bit final string 30 to a deposit right destination address 154 dictated by the instruction 20.
  • the length of the J-bit source string 27, the K-bit mask string 25, and the N-bit destination string 35 is often the same length.
  • the 34 bit length is used in the preferred embodiment described in Table I because many video packets have 32 bit headers and 2 flag bits. The flag bits indicate whether additional packets exist and whether the 32 bits are header information or data.
  • Deposit and extract instructions can be executed by the CPU 2 of a computer system 1 or by an embedded stream processor.
  • an embedded stream processor within a computer system 1 is illustrated in Figure 8.
  • Figure 8 shows a computer system 1 that includes a CPU 2, firmware 4, data storage 5, RAM 6, a video card 17, an embedded stream processor 15, and an IEEE 1394-1995 interface circuit 13, all of which are intercoupled by a bus structure 7.
  • a display monitor 8 is coupled to the video card 17.
  • a keyboard 9 is coupled to the CPU 2.
  • the embedded stream processor 15 is coupled to the bus structure 7 and the IEEE 1394-1995 interface circuit 13.
  • the IEEE 1394-1995 interface circuit 13 is coupled to a video camera 16 by an IEEE 1394-1995 serial bus cable 92.
  • the video camera 16 is coupled to a second IEEE 1394-1995 device 10 by a second IEEE 1394-1995 serial bus cable 90.
  • the prefe ⁇ ed embodiment of the embedded stream processor 15 is taught within U.S.
  • the embedded stream processor 15 is programmable and will execute a series of instructions on a stream of data in order to perform operations and manipulations on the data as required to place the data in the appropriate format.
  • the embedded stream processor 15 is tasked with converting digital data from one application format to another.
  • Digital data is generally transferred in data packets over the IEEE 1394-1995 serial bus.
  • the data packets contain both header and data fields.
  • the header provides information such as the size and format of the data packet.
  • the embedded stream processor 15 selectively captures and modifies appropriate header and data bits.
  • the captured header and data bits are then provided to appropriate locations using the deposit instructions of the present invention.

Abstract

Deposit and extract instructions include an opcode, a source address, a destination address, a shift number and a K-bit mask string. The opcode describes the operations to be performed upon a J-bit source string and an N-bit destination string. The source address points to the memory location of the J-bit source string. The destination address points to the memory location of the N-bit destination string. The shift number indicates the number of bits the J-bit source string is to be shifted to generate a shifted bit string. The combination of the shifted bit string with the N-bit destination string is conducted under the control of the K-bit mask string. The invention is useful for high speed digital data processing, such as that performed by devices operating under the IEEE 1394 protocol.

Description

METHOD AND APPARATUS FOR EXTRACTING AND DEPOSITING A STRING OF BITS FROM A SOURCE INTO A DESTINATION
FIELD OF INVENTION:
The present invention relates to the field of computer systems. More particularly, the present invention relates to instructions used to move data within a string from one location to another.
BACKGROUND OF THE INVENTION:
The IEEE standard, "IEEE 1394 Standard For A High Performance Serial Bus," Draft ratified in 1995, is an international standard for implementing an inexpensive high-speed serial bus architecture which supports both asynchronous and isochronous format data transfers. Isochronous data transfers are real-time transfers which deliver data on time without guaranteeing the integrity of the data. Each packet of data transferred isochronously is transferred in its own time period. The IEEE 1394-1995 standard bus architecture provides up to sixty- four (64) channels for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure. Asynchronous transfers are traditional data transfer operations which guarantee the integrity of the data during delivery using an acknowledgement protocol.
The IEEE 1394-1995 standard provides a high-speed serial bus for interconnecting digital devices thereby providing a universal I/O connection. The IEEE 1394-1995 standard defines a digital interface for the applications thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus. Correspondingly, a receiving application will receive digital data from the bus, not analog data, and will therefore not be required to convert analog data to digital data. Devices can be added and removed from an IEEE 1394-1995 bus while the bus is active. If a device is so added or removed the bus will then automatically reconfigure itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique identification number on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
The IEEE 1394-1995 standard provides for up to sixty- four different isochronous channels to be used within an IEEE 1394-1995 network of devices. However, in current implementations, certain 1394 devices are being built with the capability to only transmit and receive isochronous data over a subset of less than sixty- four channels. When receiving data on an isochronous channel, that data must be processed by the receiving device. This processing includes any or all of displaying, manipulating, forwarding and storing. Often, data received on different isochronous channels is processed differently, depending on the type of device from which the data is received, the type of data that is received and the desired use of the data. If data received on an isochronous channel is not received and processed efficiently, errors in the display or use of the data can result.
There are a wide variety of computer systems capable of processing digital data. A basic structure of a computer system is shown in Figure 1A. The heart of the computer system 1 is a central processing unit ("CPU") 2. Within a computer system 1 the CPU 2 is coupled to firmware 4, data storage devices 5, ports 3, and random access memory ("RAM") 6 by a bus structure 7. Data storage devices 5 include hard drives, floppy drives, and CD- ROMs. Input/output ("I/O") devices such as a display monitor 8 and an IEEE 1394-1995 device 10, are coupled to the bus structure 7 through ports 3. A keyboard 9 is also coupled to the CPU 2 through one of the ports 3. Ports 3, both serial or parallel, are used to connect the computer system 1 to modems, printers, and other devices, including other computer systems. Figure IB illustrates a computer system 1 coupled to a display monitor 8 and networked to an IEEE 1394-1995 device 10, such as a video camera, through an IEEE 1394-1995 serial cable 11.
In a computer system 1, firmware 4 is used to seek out and load an operating system from one of the data storage devices 5 (usually the hard drive) when the computer system 1 is first turned on. Programs and applications used by the computer system 1 are generally stored on the hard drive and moved at least in part to the RAM 6 during use. Common CPUs 2 included within a computer system 1 include reduced instruction set computation ("RISC") processors or complex instruction set computation ("CISC") processors. Examples of RISC processors are the PowerPC™ processor manufactured by International Business Machines Corporation and the G3 processor manufactured by Motorola Corporation for Apple Computer Corporation personal computers. Examples of CISC processors are the model 80x86 processor and the Pentium™ processor, which are both available from Intel Corporation of Santa Clara, California.
A CPU 2 stores data in internal memory locations, registers, and memory. Registers are used during program execution to temporarily store intermediate results. The advantage of storing data in a register instead of a memory location is that the data within the register can be accessed much faster. Data that is not used during register operation is stored in memory. Memory associated with a processor ("associated memory") is typically located within the CPU 2 itself as LI cache, nearby the CPU 2 as L2 cache, or in an area separate from the CPU 2.
The location in which data is stored in the registers and memory is identified by an address. A read operation is used to access data found at a specific address. A write operation is used to store data at a specific address. Writing a value to a specific address will erase the value previously found at that address.
Computer systems are controlled by instructions. Instructions are statements specifying an operation to be performed and what data operands are to be processed by the computer system. A queue of pre-selected and sequenced instructions make up each computer program. Each instruction includes an operation code ("opcode") and operands. The opcode is the part of the instruction that identifies the operation to be performed. Typical operations are ADD, SUBTRACT, and MOVE.
Operands describe the data to be processed as the operation specified by the opcode is carried out. The instruction's operands may be an address location or actual data. Placing actual data within the instruction typically results in faster execution of the instruction. Limitation in the instruction's size, however, usually dictates that most operands are address locations for data stored in memory or registers.
A collection of instructions to be used by a particular computer system 1 are referred to as an instruction set. In RISC architectures, the instructions are of uniform length. In x86
CISC processors, the length of instructions varies widely. The minimum instruction consists of a single opcode byte and is 8 bits long. A long instruction that includes a prefix byte is as long as 104 bits. Longer instructions containing more than a single prefix byte are also possible. One common instruction completed by the CPU 2 is a shift instruction. Shifting is the process of moving data that is stored in a storage device relative to the boundaries of the device, as opposed to moving data in or out of the device. The storage device is often a register designed specifically for shifting ("shift register"). The direction of the shift is either left or right. Vacated bit positions (on the leftmost for shift right operations and on the rightmost for shift left operations) are filled with logical ZEROs. Shift operations are often used in field alignments, packing and unpacking of data items into storage units, and highspeed multiplication and division. Simple shift registers shift data only one space per shift. More advanced shift registers shift data any arbitrary number of spaces per individual shift.
An operation very similar to shifting is rotation. Rotation differs from shifting in that, in a left shift operation, a bit rotated out from the left is placed back into the vacated rightmost bit position. Similarly, in a right shift operation, a bit rotated out from the right is placed back into the vacated leftmost bit position. Otherwise shift and rotate operations are identical.
Another common instruction completed by the CPU 2 is a mask instruction. Masking is used to extract desired information from a storage unit while suppressing the undesired information. In the below example, only the 8 least significant bits of the 16 bit string are extracted from the original register bit string:
01010111 01011100 register bit string
00000000 11111111 mask bit string 00000000 01011100 bit string result
As shown, a bitwise logical AND operation is performed with the register bit string and the mask bit string. Where the value of the mask bit is logical ONE, the corresponding register bit is retained in the bit string result. Where the value of the mask bit is logical ZERO, the register bit is suppressed. The mask bit string is generated during the execution of the instruction from data included within the instruction. A masking operation is used in combination with bit string read operations, shift registers, bitwise logic operations, and bit string write operations to deposit a string of bits into a specific memory or register location. An extract function is a form of a mask operation. For a source bit string S, a destination bit string D, and a mask bit string Mask, an extract function performs a bitwise logical AND operation with the source bit string S and the mask bit string Mask, then places the bit string result into the destination bit string D. In boolean algebra, the equation reads:
D = S AND Mask
A more complex mask operation is the deposit function. In a deposit function, the bits of the destination string D are preserved in the areas masked in the source string S. In boolean algebra, the equation reads:
D = (S AND Mask) OR (D AND -Mask)
Mask bit strings usually follow predictable patterns. First, the logical ONEs of the mask are typically grouped together. Second, the mask is typically right justified or left justified. Below are examples of 16 bit mask strings.
00000011 11111111 example one
11111111 11000000 example two
Due to their predictable patterns, mask bit strings can be defined in fewer bits than their full length. Defining the mask in fewer bits allows instructions sets to save space within the masking instruction. The cost of saved space, however, is that an additional decoding step is required to generate the mask.
SUMMARY OF THE INVENTION:
The method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string of the present invention is an improved implementation of deposit and extract instructions wherein the instruction contains an opcode, a source address, a destination address, a shift number, and a K-bit mask string. The opcode describes the operations to be performed upon a J-bit source string and an N-bit destination string. The source address points to the register in the CPU or the location of the J-bit source string. The destination address points to the register in the CPU or the location of the N-bit destination string. The shift number indicates the number of bits the J-bit source string will be shifted to generate a shifted bit string. The combination of the shifted bit string with the N-bit destination string is conducted under the control of the K-bit mask string. The method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string of the present invention is particularly useful for high speed digital data processing, such as that required by IEEE 1394-1995 compliant devices.
An instruction includes an opcode, a source address, a destination address, a shift number, and a mask bit string. The opcode describes the operations to be performed upon a particular source bit string and destination bit string. The operations include an extract left instruction, an extract right instruction, a deposit left instruction, and a deposit right instruction. The source address points to the register in the CPU or the location of the source bit string. The destination address points to the register in the CPU or the location of the destination bit string. The shift number indicates the number of bits the source bit string is to be shifted to generate a shifted bit string. The direction of shift is dictated by the shift value or the opcode. The combination of the shifted bit string with the destination bit string is conducted under the control of a mask bit string. The more specific implementations of the present invention are the extract and deposit instructions.
The deposit instruction also begins with an instruction comprising an opcode, a source address, a destination address, a shift value, and a K-bit mask bit string. The CPU first reads a J-bit source string located at the source address and an N-bit destination string located at the destination address. The CPU shifts the J-bit source string as determined by the shift number and the opcode to obtain a shifted bit string. The CPU then combines the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N-bit final string, such that: (i) individual bits of the shifted bit string are included in the N-bit final string where the corresponding individual bits of the K-bit mask string have a value equal to logical ONE; and individual bits of the N-bit destination string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a value equal to logical ZERO. In a final step, the CPU writes the N-bit final string to the destination address. There are three additional implementations of the deposit instruction. In the first additional implementation, the numeric values of J, K, and N are equal. In the second additional implementation, the combination step is performed by the following steps: (i) performing a logical AND operation of the shifted bit string and the K-bit mask string to obtain a first bit string; (ii) performing a logical AND operation of the N-bit destination string and the logical complement of the K-bit mask string to obtain a second bit string; and (iii) performing a logical OR operation of the first bit string and the second bit string to obtain the
N-bit final string. In the third additional implementation, the processing steps are performed by an embedded stream processor and the registers within the embedded stream processor contain the source address and the destination address.
Like the deposit instruction, the extract instruction begins with an instruction comprising an opcode, a source address, a destination address, a shift number, and a K-bit mask string. The CPU or equivalent means first reads a J-bit source string located at the source address. The CPU shifts the J-bit source string as determined by the shift number and the opcode to obtain a shifted bit string. The CPU then combines the shifted bit string and the K-bit mask string to obtain an N-bit final string, such that: (i) individual bits of the shifted bit string are included in the N-bit final string where the corresponding individual bits of the K- bit mask string have a value of logical ONE; and (ii) remaining individual bits of the N-bit final string have a value of logical ZERO. In a final step, the CPU writes the N-bit final string to the destination address. There are three additional implementations of the extract instruction. In the first additional implementation, the numeric values of J, K, and N are equal. In the second additional implementation, the combination step is accomplished by performing a bitwise logical AND operation with the shifted bit string and the K-bit mask string. In the third additional implementation, the processing steps are performed by an embedded stream processor and the registers within the embedded stream processor contain the source address and the destination address.
BRIEF DESCRIPTION OF THE DRAWINGS: Figure 1A illustrates a block diagram showing the basic components of an exemplary computer system.
Figure IB shows a computer system networked to an IEEE 1394-1995 device through an IEEE 1394-1995 serial cable.
Figures 2A through 2E show different combinations of source bit strings and destination bit strings.
Figure 3 shows a format of the deposit and extract instructions according to the preferred embodiment of the present invention.
Figure 4 shows a block diagram of a circuit for completing an extract left instruction according to the preferred embodiment of the present invention. Figure 5 shows a block diagram of a circuit for completing an extract right instruction according to the preferred embodiment of the present invention.
Figure 6 shows a block diagram of a circuit for completing a deposit left instruction according to the preferred embodiment of the present invention.
Figure 7 shows a block diagram of a circuit for completing a deposit right instruction. Figure 8 illustrates a block diagram showing the basic components of an exemplary computer system with an IEEE 1394-1995 interface circuit and attached IEEE 1394-1995 devices.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT: The method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string of the present invention preferably include the mask bit string within the deposit and extract instructions, thereby eliminating a mask generation step during the execution of the instruction.
Figures 2A through 2E illustrate possible combinations of a source bit string, from which a string of bits is extracted, and a destination bit string, to which a string of bits is deposited. The section L within the source bit string represents the bits selected for extraction. The section M within the destination bit string represents the bits to be replaced by the section L bits extracted from the source bit string. The bits designated by "s" in the source bit string represent bits that are removed by masking during an extract instruction. The bits designated by "d" in the destination bit string represent bits that are either zeroed out if the operands are subjected to an extract instruction or that will remain if the operands are subjected to a deposit instruction. The designation "X" represents the number of bits to the right of the section L in the source bit string. The designation "Y" represents the number of bits to the right of the section M in the destination bit string. In the source and destination bit strings illustrated in Figure 2 A, the value of X in the source bit string 60 and the value of Y in the destination bit string 72 are both greater than zero. In this example, the value of Y is also greater than the value of X. In the source and destination bit strings illustrated in Figure 2B, the value of X in the source bit string 62 and the value of Y in the destination bit string 74 are both equal to zero. In the source and destination bit strings illustrated in Figure 2C, the value of X in the source bit string 64 is equal to zero and the value of Y in the destination bit string 76 is greater than zero. In the source and destination bit strings illustrated in Figure 2D, the value of X in the source bit string 66 is greater than zero and the value of Y in the destination bit string 78 is equal to zero. In the source and destination bit strings illustrated in Figure 2E, the value of X in the source bit string 68 and the value of Y in the destination bit string 80 are both greater than zero. In this example, the value of X is also greater than the value of Y.
The direction of the shifting step in an extract or deposit instruction is determined by the relative positions of the section L in the source bit string and the section M in the destination bit string. As an example, in Figures 2A and 2C, the section M is located to the left of the section L. To move the bits within the section L to the location within the section
M, a shift left step must be performed. Similarly, in Figures 2D and 2E, the section M is located to the right of the section L and a shift right step must be performed to move the bits within the section L to the location within the section M. Because section M and section L are both right justified in the example of Figure 2B, no shifting is required. Within the preferred embodiment of the present invention, the direction of the shifting step is contained in the opcode. Extract left and deposit right instructions shift the bits within the section L to the left. Extract right and deposit right instructions shift the bits within the section L to the right.
The magnitude of each shift operation is determined by the difference between the X and Y values. In the preferred embodiment, the shift value is the absolute value of the difference between the X and Y values. In an alternative embodiment, the shift value is a signed number and the sign of the shift value determines the shift direction.
The instruction format of the preferred embodiment is illustrated in Figure 3. The instruction 20 is preferably 64 bits wide. The prefeπed format of the instruction 20 is set forth below in Table I. TABLE I: Instruction Format
Figure imgf000009_0001
The opcode 21 is located within the six most significant bits of the instruction 20 and informs the processor which operation is to be performed. The source address 22 is located within the next eight most significant bits and specifies the location for the source bit string. The destination address 23 is located within the next eight most significant bits and specifies the location of the destination bit string. The shift value 24 is located within the next six most significant bits and represents the number of bits the source bit string must be shifted to properly place the section L of the source bit string into the section M of the destination bit string. The shift value 24 is not an address. The mask bit string 25 is located within the thirty- four least significant bits of the instruction 20 and is similar to the source bit string and the destination bit string in that it contains 34 bits and the two most significant bits are flag bits. The flag bits indicate first whether the value in the source address 22 is a data packet header and second whether there is another packet that will be sent that is related to the present packet. Unlike the source bit string and the destination bit string, the mask bit string 25 is located within the instruction 20. Like the shift value 24, the mask bit string 25 is generated prior to the execution of the instruction 20. In alternative embodiments of the instruction 20, the length of the source bit string, the destination bit string, and the mask bit string 25 can be of different lengths.
In the preferred embodiment, the direction of the shift operation is dictated by the opcode 21. The extract left instruction, for example, has a different opcode 21 than the extract right instruction. In an alternative embodiment, the shift direction is included in the shift value 24. In this alternative embodiment, the difference between a left shift versus a right shift is encoded in the shift value 24 by use of a flag bit or use of signed numbers.
A block diagram of a circuit for implementing an extract left instruction is illustrated in Figure 4. In this implementation, an extract left source address 112 from the instruction 20 is loaded into a source register 26. A J-bit source string 27 located at the extract left source address is then loaded into a shift register 28 from the source register 26. An extract left shift value 114 from the instruction 20 and an extract left opcode 1 10 from the instruction 20 are also loaded into the shift register 28. Taking the left shift direction from the extract left opcode 110 and the amount of shift from the extract left shift value 114, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to a logical AND gate 115. An extract left K-bit mask string 1 16 from the instruction 20 is also provided as an input to the logical AND gate 115. The logical AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 116 and provides an N-bit final string 30 as an output. The N-bit final string 30 is provided from the logical AND gate 115 to the destination register 31. A destination register 31 writes the N-bit final string 30 to an extract left destination address 118 dictated by the instruction 20.
A block diagram of a circuit for implementing an extract right instruction is illustrated in Figure 5. In this implementation, an extract right source address 122 from the instruction 20 is loaded into the source register 26. A J-bit source string 27 located at the extract right source address 122 is then loaded into a shift register 28 from the source register 26. An extract right shift value 124 from the instruction 20 and an extract right opcode 120 from the instruction 20 are also loaded into the shift register 28. Taking the right shift direction from the extract right opcode and the amount of shift from the extract right shift value 124, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to the logical AND gate 1 15. An extract right K-bit mask string 126 from the instruction 20 is also provided as an input to the logical AND gate 115. The logical
AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 126 and provides an N-bit final string 30 as an output. The N-bit final string 30 is provided from the logical AND gate 115 to the destination register 31. The destination register 31 writes the N-bit final string 30 to an extract right destination address 128 dictated by the instruction 20.
A block diagram of a circuit for implementing a deposit left instruction is illustrated in Figure 6. In this implementation, a deposit left source address 132 from the instruction 20 is loaded into the source register 26. A J-bit source string 27 located at the deposit left source address 132 is then loaded into a shift register 28 from the source register 26. A deposit left shift value 136 and deposit left opcode 130 from the instruction 20 are also loaded into the shift register 28. Taking the left shift direction from the deposit left opcode 130 and the amount of shift from the deposit left shift value 136, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to the logical AND gate 115. A deposit left K-bit mask string 138 from the instruction 20 is also provided as an input to the logical AND gate 115. The logical AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 138 and provides a first bit string 32 as an output. The first bit string 32 is provided from the logical AND gate 115 as an input to the logical OR gate 117. A deposit left destination address 134 from the instruction 20 is loaded into a destination register 34 and a destination register 31. The destination register 34 receives the deposit left destination address 134 from the instruction 20 and reads the N-bit destination string 35 located at the deposit left destination address 134. The N-bit destination string 35 is provided as an input to a logical AND gate 119. The deposit left K-bit mask string 138 from the instruction 20 is provided as an input to an inverter circuit 121. The inverter circuit 121 inverts the bits within the deposit left K-bit mask string 138. The bitwise complement 36 of the deposit left K-bit mask string 138 is provided as an output from the inverter circuit 121 to the logical AND gate 119 as an input. The logical AND gate 119 performs a logical AND operation on the N-bit destination string 35 and the bitwise complement 36 and provides a second bit string 33 as an output. The second bit string 33 is provided from the logical AND gate 119 as an input to the logical OR gate 117. The logical OR gate 117 performs a logical OR operation on the first bit string 32 and the second bit string 33 and provides an N-bit final string 30 as an output. The N-bit final string 30 is provided from the logical OR gate 117 to the destination register 31. The destination register 31 writes the N-bit final string 30 to a deposit left destination address 134 dictated by the instruction 20. A block diagram of a circuit for implementing a deposit right instruction is illustrated in Figure 7. In this implementation, a deposit right source address 152 from the instruction 20 is loaded into the source register 26. A J-bit source string 27 located at the deposit right source address 152 is then loaded into a shift register 28 from the source register 26. A deposit right shift value 156 and deposit right opcode 150 from the instruction 20 are also loaded into the shift register 28. Taking the right shift direction from the deposit right opcode
150 and the amount of shift from the deposit right shift value 156, the shift register 28 then produces a shifted bit string 29. This shifted bit string 29 is then provided as an input to the logical AND gate 115. A deposit right K-bit mask string 158 from the instruction is also provided as an input to the logical AND gate 115. The logical AND gate 115 performs a logical AND operation on the shifted bit string 29 and the K-bit mask string 158 and provides a first bit string 32 as an output. The first bit string 32 is provided from the logical AND gate 115 as an input to a logical OR gate 117.
A deposit right destination address 154 from the instruction 20 is loaded into the destination register 34 and a destination register 31. The destination register 34 receives the deposit right destination address 154 from the instruction 20 and reads the N-bit destination string 35 located at the deposit right destination address 154. The N-bit destination string 35 is provided as an input to a logical AND gate 119. The deposit right K-bit mask string 158 from the instruction 20 is provided as an input to an inverter circuit 121. The inverter circuit 121 inverts the bits within the deposit right K-bit mask string 158. The bitwise complement 36 of the deposit right K-bit mask string 158 is provided as an output from the inverter circuit
121 to the logical AND gate 119 as an input. The logical AND gate 119 performs a logical AND operation on the N-bit destination string 35 and the bitwise complement 36 and provides a second bit string 33 as an output. The second bit string 33 is provided from the logical AND gate 119 as an input to the logical OR gate 117. The logical OR gate 117 performs a logical OR operation on the first bit string 32 and the second bit string 33 and provides an N-bit final string 30 as an output. The N-bit final string 30 is provided from the logical OR gate 117 to the destination register 31. The destination register 31 writes the N-bit final string 30 to a deposit right destination address 154 dictated by the instruction 20.
In the deposit and extract instructions of the present invention, the length of the J-bit source string 27, the K-bit mask string 25, and the N-bit destination string 35 is often the same length. The 34 bit length is used in the preferred embodiment described in Table I because many video packets have 32 bit headers and 2 flag bits. The flag bits indicate whether additional packets exist and whether the 32 bits are header information or data.
Deposit and extract instructions can be executed by the CPU 2 of a computer system 1 or by an embedded stream processor. Use of an embedded stream processor within a computer system 1 is illustrated in Figure 8. Figure 8 shows a computer system 1 that includes a CPU 2, firmware 4, data storage 5, RAM 6, a video card 17, an embedded stream processor 15, and an IEEE 1394-1995 interface circuit 13, all of which are intercoupled by a bus structure 7. A display monitor 8 is coupled to the video card 17. A keyboard 9 is coupled to the CPU 2. The embedded stream processor 15 is coupled to the bus structure 7 and the IEEE 1394-1995 interface circuit 13. The IEEE 1394-1995 interface circuit 13 is coupled to a video camera 16 by an IEEE 1394-1995 serial bus cable 92. The video camera 16 is coupled to a second IEEE 1394-1995 device 10 by a second IEEE 1394-1995 serial bus cable 90. The prefeπed embodiment of the embedded stream processor 15 is taught within U.S.
Patent Application Serial Number 08/612,322, filed on March 7, 1996, and entitled "Isochronous Data Pipe for Managing and Manipulating a High-Speed Stream of Isochronous Data Flowing Between an Application and a Bus Structure" which is hereby incorporated by reference. The embedded stream processor 15 is programmable and will execute a series of instructions on a stream of data in order to perform operations and manipulations on the data as required to place the data in the appropriate format. Within the present invention, the embedded stream processor 15 is tasked with converting digital data from one application format to another. Digital data is generally transferred in data packets over the IEEE 1394-1995 serial bus. The data packets contain both header and data fields. The header provides information such as the size and format of the data packet. Using the extract instructions of the present invention, the embedded stream processor 15 selectively captures and modifies appropriate header and data bits. The captured header and data bits are then provided to appropriate locations using the deposit instructions of the present invention. The present invention has been described in terms of specific embodiments incorporating details to facilitate the understanding of principles of construction and operation of the invention. References to specific embodiments and details of the invention are not intended to limit the scope of the appended claims. It will be apparent to those skilled in the art that modifications may be made in the illustrated embodiment without departing from the spirit and scope of the invention. Specifically, it will be apparent to those skilled in the art that while the prefeπed embodiment of the present invention is used with an IEEE
1394-1995 serial bus structure, the present invention could also be implemented on any other appropriate systems or bus structures, including other or later versions of the IEEE 1395 serial bus.

Claims

C L A I M SWe claim:
1. A method of placing a string of bits onto a binary bit string comprising the steps of: a. reading an instruction comprising an opcode, a source address, a destination address, a shift number, and a K-bit mask string; b. reading a J-bit source string located at the source address; c. reading an N-bit destination string located at the destination address; d. shifting the J-bit source string as determined by the shift number and the opcode to obtain a shifted bit string; e. combining the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N-bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and individual bits of the N-bit destination string are included in the N-bit final string where the corresponding individual bits of the K-bit mask string have a second logical value; and f. writing the N-bit final string to the destination address.
2. The method of placing a string of bits onto a binary bit string as claimed in claim 1 wherein numeric values of J, K, and N are equal.
3. The method of placing a string of bits onto a binary bit string as claimed in claim 1 wherein the step of combining the shifted bit string and the N-bit destination string to obtain the N-bit final string is performed by completing the following steps: a. performing a bitwise logical AND operation with the shifted bit string and the K-bit mask string to obtain a first bit string; b. performing a bitwise logical AND operation with the N-bit destination string and the logical complement of the K-bit mask string to obtain a second bit string; and c. performing a bitwise logical OR operation with the first bit string and the second bit string.
4. The method of placing a string of bits onto a binary bit string as claimed in claim 1 wherein the steps are performed by an embedded stream processor.
5. The method of placing a string of bits onto a binary bit string as claimed in claim 1 wherein the first logical value is equal to a logical ONE and the second logical value is equal to a logical ZERO.
6. A method of placing a string of bits onto a binary bit string comprising the steps of: a. reading an instruction comprising an opcode, a source address, a destination address, a shift number, and a K-bit mask string; b. reading a J-bit source string located at the source address; c. shifting the J-bit source string as determined by the shift number and the opcode to obtain a shifted bit string; d. combining the shifted bit string and the K-bit mask string to obtain an N-bit final string, wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and remaining individual bits of the N-bit final string have a second logical value; and e. writing the N-bit final string to the destination address.
7. The method of placing a string of bits onto a binary bit string as claimed in claim 6 wherein numeric values of J, K, and N are equal.
8. The method of placing a string of bits onto a binary bit string as claimed in claim 6 wherein the step of combining the shifted bit string and K-bit mask string to obtain the N-bit final string is completed by performing a bitwise logical AND operation with the shifted bit string and the K-bit mask string.
9. The method of placing a string of bits onto a binary bit string as claimed in claim 6 wherein the steps are completed by performing an embedded stream processor.
10. The method of placing a string of bits onto a binary bit string as claimed in claim 6 wherein the first logical value is equal to a logical ONE and the second logical value is equal to a logical ZERO.
11. An instruction to be performed by a computer system having an associated memory comprising: a. an opcode describing operations to be performed upon a source bit string and a destination bit string; b. a source address pointing to a source memory location of the source bit string; c. a destination address pointing to a destination memory location of the destination bit string; d. a shift number indicating a number of bits the source bit string is to be shifted to generate a shifted bit string prior to combination of the shifted bit string with the destination bit string; and e. a mask bit string used to control combination of the source bit string and the destination bit string.
12. The instruction to be performed by a computer system having an associated memory as claimed in claim 11 wherein the source memory location is within the associated memory.
13. The instruction to be performed by a computer system having an associated memory as claimed in claim 11 wherein the destination memory location is within the associated memory.
14. An apparatus for placing a string of bits onto a binary bit string comprising: a. means for reading an instruction, wherein the instruction includes an opcode specifying a direction of shift operation, a source address at which a J-bit source string is located, a destination address at which an N-bit destination string is located, a shift value specifying a number of bits of the shift operation, and a K-bit mask string; b. means for shifting coupled to the means for reading and configured for shifting the J-bit source string the number of bits specified by the shift value and the direction specified by the opcode to produce a shifted bit string; c. means for combining coupled to the means for reading and to the means for shifting and configured for combining the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N-bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and individual bits of the N-bit destination string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a second logical value; and d. means for writing, coupled to the means for reading, the means for shifting, and to the means for combining and configured for writing the N-bit final string to the destination address.
15. The apparatus as claimed in claim 14 wherein numeric values of J, K, and N are equal.
16. The apparatus as claimed in claim 14 wherein the means for combining further comprises: a. a first logical AND gate coupled to receive the shifted bit string and the K-bit mask string for performing a bitwise logical AND operation with the shifted bit string and the K-bit mask string to obtain an N-bit first string; b. a second logical AND gate coupled to receive the N-bit destination string and a logical complement of the K-bit mask string for performing a bitwise logical AND operation with the N-bit destination string and the logical complement of the K-bit mask string to obtain an N-bit second string; and c. a logical OR gate coupled to receive the N-bit first string and the N-bit second string for performing a bitwise logical OR operation with the first bit string and the N-bit second string to obtain the N-bit final string.
17. An apparatus for placing a string of bits onto a binary bit string comprising: a. means for reading an instruction, wherein the instruction includes an opcode specifying a direction of shift operation, a source address at which a J-bit source string is located, a destination address at which an N-bit destination string is located, a shift value specifying a number of bits of the shift operation, and a K-bit mask string; b. means for shifting coupled to the means for reading and configured for shifting the J-bit source string the number of bits specified by the shift value and the direction specified by the opcode to produce a shifted bit string; c. means for combining coupled to the means for reading and to the means for shifting and configured for combining the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N-bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and remaining individual bits of the N-bit final string have a second logical value; and d. means for writing, coupled to the means for reading, the means for shifting, and to the means for combining and configured for writing the N-bit final string to the destination address.
18. The apparatus as claimed in claim 17 wherein numeric values of J, K, and N are equal.
19. The apparatus as claimed in claim 17 wherein the means for combining further comprises a logical AND gate coupled to receive the shifted bit string and the K-bit mask string for performing a bitwise logical AND operation with the shifted bit string and the K-bit mask string to obtain the N-bit final string.
20. An apparatus for placing a string of bits onto a binary bit string comprising: a. a reading circuit configured to access an opcode located within an instruction wherein the opcode specifies a direction of a shift operation, a J-bit source string located at a source address contained in the instruction, an N-bit destination string located at a destination address contained in the instruction, a shift value located within the instruction, wherein the shift value specifies a number of bits of the shift operation, and a K-bit mask string located within the instruction; b. a shifting register coupled to the reading circuit and configured to shift the J- bit source string the number of bits specified by the shift value and the direction specified by the opcode to produce a shifted bit string; c. a combining circuit coupled to the reading circuit and to the shift register and configured to combine the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N-bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and individual bits of the N-bit destination string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a second logical value; and d. a writing circuit coupled to the reading circuit, the shift register and to the combining circuit and configured to write the N-bit final string to the destination address.
The apparatus as claimed in claim 20 wherein numeric values of J, K, and N are equal.
22. The apparatus as claimed in claim 20 wherein the combining circuit further comprises a. a first logical AND gate coupled to receive the shifted bit string and the K-bit mask string for performing a bitwise logical AND operation upon the shifted bit string and the K-bit mask string to obtain an N-bit first string; b. a second logical AND gate coupled to receive the N-bit destination string and a logical complement of the K-bit mask string for performing a bitwise logical
AND operation upon the N-bit destination string and the logical complement of the K-bit mask string to obtain an N-bit second string; and c. a logical OR gate coupled to receive the N-bit first string and the N-bit second string for performing a bitwise logical OR operation with the first bit string and the N-bit second string to obtain the N-bit final string.
23. An apparatus for placing a string of bits onto a binary bit string comprising: a. a reading circuit configured to access an opcode located within an instruction, wherein the opcode specifies a direction of a shift operation, a J-bit source string located at a source address located within the instruction, an N-bit destination string located at a destination address located within the instruction, a shift value located within the instruction, wherein the shift value specifies a number of bits of the shift operation, and a K-bit mask string located within the instruction; b. a shift register coupled to the reading circuit and configured to shift the J-bit source string the number of bits specified by the shift value and the direction specified by the opcode to produce a shifted bit string; c. a combining circuit coupled to the reading circuit and to the shift register and configured to combine the shifted bit string and the K-bit mask string to obtain an N-bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and remaining individual bits of the N-bit final string have a second logical value; and d. a writing circuit coupled to the reading circuit, the shift register, and to the combining circuit, and configured to write the N-bit final string to the destination address.
24. The apparatus as claimed in claim 23 wherein numeric values of J, K, and N are equal.
25. The apparatus as claimed in claim 23 wherein the combining circuit includes an AND gate performing a bitwise logical AND operation upon the shifted bit string and the K-bit mask string.
26. A computer system configured for coupling to a network of devices to transmit and receive data comprising: a. an interface circuit to transmit data to and receive data from the network of devices; and b. an embedded stream processor coupled to the interface circuit to process data directed to and from the interface circuit, including: i) a reading circuit configured to access an opcode located within an instruction wherein the opcode specifies a direction of a shift operation, a J-bit source string located at a source address contained in the instruction, an N-bit destination string located at a destination address contained in the instruction, a shift value located within the instruction, wherein the shift value specifies a number of bits of the shift operation, and a K-bit mask string located within the instruction; ii) a shift register coupled to the reading circuit and configured to shift the J-bit source string the number of bits specified by the shift value and the direction specified by the opcode to produce a shifted bit string; iii) a combining circuit coupled to the reading circuit and to the shift register and configured to combine the shifted bit string and the N-bit destination string under control of the K-bit mask string to obtain an N- bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and individual bits of the N-bit destination string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a second logical value; and iv) a writing circuit coupled to the reading circuit, the shift register and to the combining circuit and configured to write the N-bit final string to the destination address.
27. The computer system as claimed in claim 26 wherein numeric values of J, K, and N are equal.
28. The computer system as claimed in claim 26 wherein the combining circuit further comprises: a. a first logical AND gate coupled to receive the shifted bit string and the K-bit mask string for performing a bitwise logical AND operation upon the shifted bit string and the K-bit mask string to obtain an N-bit first string; b. a second logical AND gate coupled to receive the N-bit destination string and a logical complement of the K-bit mask string for performing a bitwise logical AND operation upon the N-bit destination string and the logical complement of the K-bit mask string to obtain an N-bit second string; and c. a logical OR gate coupled to receive the N-bit first string and the N-bit second string for performing a bitwise logical OR operation with the first bit string and the N-bit second string to obtain the N-bit final string.
29. A computer system configured for coupling to a network of devices to transmit and receive data comprising: a. an interface circuit to transmit data to and receive data from the network of devices; b. an embedded stream processor coupled to the interface circuit to process data directed to and from the interface circuit, including: i) a reading circuit configured to access an opcode located within an instruction, wherein the opcode specifies a direction of a shift operation, a J-bit source string located at a source address located within the instruction, a destination address located within the instruction, a shift value located within the instruction, wherein the shift value specifies a number of bits of the shift operation, and a K-bit mask string located within the instruction; ii) a shift register coupled to the reading circuit and configured to shift the J-bit source string the number of bits specified by the shift value and the direction specified by the opcode to produce a shifted bit string; iii) a combining circuit coupled to the reading circuit and the shift register and configured to combine the shifted bit string and the K-bit mask string to obtain an N-bit final string wherein individual bits of the shifted bit string are included in the N-bit final string where the coπesponding individual bits of the K-bit mask string have a first logical value and remaining individual bits of the N-bit final string have a second logical value; and iv) a writing circuit coupled to the reading circuit, the shift register, and to the combining circuit, and configured to write the N-bit final string to the destination address.
30. The computer system as claimed in claim 29 wherein numeric values of J, K, and N are equal.
31. The computer system as claimed in claim 29 wherein the combining circuit includes an AND gate performing a bitwise logical AND operation upon the shifted bit string and the K-bit mask string.
PCT/US2000/032066 1999-11-23 2000-11-21 Method and apparatus for extracting and depositing a string of bits from a source into a destination WO2001038974A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU17894/01A AU1789401A (en) 1999-11-23 2000-11-21 Method and apparatus for extracting and depositing a string of bits from a source into a destination

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/448,568 US6523108B1 (en) 1999-11-23 1999-11-23 Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
US09/448,568 1999-11-23

Publications (1)

Publication Number Publication Date
WO2001038974A1 true WO2001038974A1 (en) 2001-05-31

Family

ID=23780833

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/032066 WO2001038974A1 (en) 1999-11-23 2000-11-21 Method and apparatus for extracting and depositing a string of bits from a source into a destination

Country Status (3)

Country Link
US (1) US6523108B1 (en)
AU (1) AU1789401A (en)
WO (1) WO2001038974A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103460181A (en) * 2011-03-30 2013-12-18 飞思卡尔半导体公司 Integrated circuit device and methods of performing bit manipulation therefor
CN103460182A (en) * 2011-04-01 2013-12-18 英特尔公司 Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
WO2014158674A1 (en) * 2013-03-13 2014-10-02 Intel Corporation Techniques for enabling bit-parallel wide string matching with a simd register

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US20020188830A1 (en) * 2001-06-01 2002-12-12 Brian Boles Bit replacement and extraction instructions
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7370184B2 (en) * 2001-08-20 2008-05-06 The United States Of America As Represented By The Secretary Of The Navy Shifter for alignment with bit formatter gating bits from shifted operand, shifted carry operand and most significant bit
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7844683B2 (en) * 2001-10-10 2010-11-30 Juniper Networks, Inc. String matching method and device
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7562156B2 (en) * 2002-08-16 2009-07-14 Symantec Operating Corporation System and method for decoding communications between nodes of a cluster server
TWI256553B (en) * 2004-12-17 2006-06-11 Ind Tech Res Inst Apparatus and method for hardware semaphore
JP4434277B2 (en) * 2007-12-20 2010-03-17 株式会社デンソー Clock generation circuit and method of using the same
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8909901B2 (en) * 2007-12-28 2014-12-09 Intel Corporation Permute operations with flexible zero control
US10277683B2 (en) 2009-03-16 2019-04-30 Apple Inc. Multifunctional devices as virtual accessories
US20100235523A1 (en) * 2009-03-16 2010-09-16 Robert Garcia Framework for supporting multi-device collaboration
US20100233960A1 (en) * 2009-03-16 2010-09-16 Brian Tucker Service discovery functionality utilizing personal area network protocols
US8285860B2 (en) * 2009-03-16 2012-10-09 Apple Inc. Efficient service discovery for peer-to-peer networking devices
JP5598337B2 (en) * 2011-01-12 2014-10-01 ソニー株式会社 Memory access control circuit, prefetch circuit, memory device, and information processing system
US20150186137A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for vector bit test
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
EP0715252A1 (en) * 1994-11-14 1996-06-05 Nec Corporation A bit field peripheral

Family Cites Families (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2221629C3 (en) 1972-05-03 1978-04-27 Siemens Ag, 1000 Berlin Und 8000 Muenchen Method for synchronization in time division multiplex transmission systems
US3906484A (en) 1972-09-13 1975-09-16 Westinghouse Electric Corp Decoder input circuit for receiving asynchronous data bit streams
US4218756A (en) 1978-06-19 1980-08-19 Bell Telephone Laboratories, Incorporated Control circuit for modifying contents of packet switch random access memory
US4409656A (en) 1980-03-13 1983-10-11 Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of National Defense Serial data bus communication system
US4395710A (en) 1980-11-26 1983-07-26 Westinghouse Electric Corp. Bus access circuit for high speed digital data communication
US4379294A (en) 1981-02-12 1983-04-05 Electric Power Research Institute, Inc. Data highway access control system
US4493021A (en) 1981-04-03 1985-01-08 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Multicomputer communication system
US4633392A (en) 1982-04-05 1986-12-30 Texas Instruments Incorporated Self-configuring digital processor system with logical arbiter
GB8304950D0 (en) 1983-02-22 1983-03-23 Int Computers Ltd Data communication systems
US4897783A (en) 1983-03-14 1990-01-30 Nay Daniel L Computer memory system
US4641238A (en) 1984-12-10 1987-02-03 Itt Corporation Multiprocessor system employing dynamically programmable processing elements controlled by a master processor
US4816817A (en) * 1985-06-28 1989-03-28 Hewlett-Packard Company Line mover for bit-mapped display
US4739323A (en) 1986-05-22 1988-04-19 Chrysler Motors Corporation Serial data bus for serial communication interface (SCI), serial peripheral interface (SPI) and buffered SPI modes of operation
US4972470A (en) 1987-08-06 1990-11-20 Steven Farago Programmable connector
US4998245A (en) 1987-12-17 1991-03-05 Matsushita Electric Industrial Co., Ltd. Information transmission system having collective data transmission and collection devices
US5008879B1 (en) 1988-11-14 2000-05-30 Datapoint Corp Lan with interoperative multiple operational capabilities
US5359713A (en) 1989-06-01 1994-10-25 Legato Systems, Inc. Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system
JPH03123232A (en) 1989-10-06 1991-05-27 Matsushita Electric Ind Co Ltd Data transmission control processing method
JPH03156554A (en) 1989-11-14 1991-07-04 Hitachi Ltd Data transfer control system
FR2658971B1 (en) 1990-02-23 1995-07-28 Europ Rech Electr Lab PROCESS FOR PROCESSING DIGITAL CONTROL DATA ASSOCIATED WITH A VIDEO SIGNAL OF HD-MAC TYPE AND DEVICE FOR IMPLEMENTING THE METHOD.
US5325510A (en) 1990-05-25 1994-06-28 Texas Instruments Incorporated Multiprocessor system and architecture with a computation system for minimizing duplicate read requests
US5343469A (en) 1990-06-14 1994-08-30 Nec Corporation Communication system and communication devices having lock function
US5546553A (en) 1990-09-24 1996-08-13 Texas Instruments Incorporated Multifunctional access devices, systems and methods
US5210839A (en) 1990-12-21 1993-05-11 Sun Microsystems, Inc. Method and apparatus for providing a memory address from a computer instruction using a mask register
US5307491A (en) 1991-02-12 1994-04-26 International Business Machines Corporation Layered SCSI device driver with error handling circuit providing sense data from device directly to the driver on the occurrence of an error
DE4129205A1 (en) 1991-03-28 1992-10-01 Bosch Gmbh Robert METHOD FOR BUILDING MESSAGES FOR DATA EXCHANGE AND / OR FOR SYNCHRONIZING PROCESSES IN DATA PROCESSING SYSTEMS
US5369773A (en) 1991-04-26 1994-11-29 Adaptive Solutions, Inc. Neural network using virtual-zero
US5576980A (en) 1991-06-28 1996-11-19 Texas Instruments Incorporated Serializer circuit for loading and shifting out digitized analog signals
US5276684A (en) 1991-07-22 1994-01-04 International Business Machines Corporation High performance I/O processor
JP3243803B2 (en) 1991-08-28 2002-01-07 ソニー株式会社 AV equipment
US5487153A (en) 1991-08-30 1996-01-23 Adaptive Solutions, Inc. Neural network sequencer and interface apparatus
US5471632A (en) 1992-01-10 1995-11-28 Digital Equipment Corporation System for transferring data between a processor and a system bus including a device which packs, unpacks, or buffers data blocks being transferred
US5497466A (en) 1992-07-17 1996-03-05 Texas Instruments Inc. Universal address generator
EP0588046A1 (en) 1992-08-14 1994-03-23 International Business Machines Corporation IEEE standard 802.2 virtual device driver
US5647057A (en) 1992-08-24 1997-07-08 Texas Instruments Incorporated Multiple block transfer mechanism
US5499344A (en) 1992-10-07 1996-03-12 Texas Instruments Incorporated Programmable dual port data unit for interfacing between multiple buses
US5544324A (en) 1992-11-02 1996-08-06 National Semiconductor Corporation Network for transmitting isochronous-source data using a frame structure with variable number of time slots to compensate for timing variance between reference clock and data rate
KR100305268B1 (en) 1992-11-02 2001-11-22 아담 씨. 스트리겔 Local loopback of isochronous data in the switching mechanism
EP0596648A1 (en) 1992-11-02 1994-05-11 National Semiconductor Corporation Network link endpoint capability detection
US5550802A (en) 1992-11-02 1996-08-27 National Semiconductor Corporation Data communication network with management port for isochronous switch
US5361261A (en) 1992-11-02 1994-11-01 National Semiconductor Corporation Frame-based transmission of data
EP0596651A1 (en) 1992-11-02 1994-05-11 National Semiconductor Corporation Network for data communication with isochronous capability
KR940017376A (en) 1992-12-21 1994-07-26 오오가 노리오 Transmission method, reception method, communication method and two-way bus system
EP0607733A1 (en) 1993-01-08 1994-07-27 International Business Machines Corporation Apparatus and method for data communications between nodes
US5400340A (en) 1993-03-04 1995-03-21 Apple Computer, Inc. End of packet detector and resynchronizer for serial data buses
US5412698A (en) 1993-03-16 1995-05-02 Apple Computer, Inc. Adaptive data separator
US5509126A (en) 1993-03-16 1996-04-16 Apple Computer, Inc. Method and apparatus for a dynamic, multi-speed bus architecture having a scalable interface
US5559967A (en) 1993-03-18 1996-09-24 Apple Computer, Inc. Method and apparatus for a dynamic, multi-speed bus architecture in which an exchange of speed messages occurs independent of the data signal transfers
ATE171325T1 (en) 1993-03-20 1998-10-15 Ibm METHOD AND DEVICE FOR EDITING THE ARRANGEMENT INFORMATION FROM THE HEAD PART OF A PROTOCOL
DE4323405A1 (en) 1993-07-13 1995-01-19 Sel Alcatel Ag Access control method for a buffer memory and device for buffering data packets and switching center with such a device
US5887145A (en) 1993-09-01 1999-03-23 Sandisk Corporation Removable mother/daughter peripheral card
US5444709A (en) 1993-09-30 1995-08-22 Apple Computer, Inc. Protocol for transporting real time data
US5630082A (en) 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US5452259A (en) 1993-11-15 1995-09-19 Micron Technology Inc. Multiport memory with pipelined serial input
US5835726A (en) 1993-12-15 1998-11-10 Check Point Software Technologies Ltd. System for securing the flow of and selectively modifying packets in a computer network
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5659780A (en) 1994-02-24 1997-08-19 Wu; Chen-Mie Pipelined SIMD-systolic array processor and methods thereof
DE69531012T2 (en) 1994-03-09 2004-05-19 Matsushita Electric Industrial Co., Ltd., Kadoma Data transmission system and method
US5465402A (en) 1994-03-23 1995-11-07 Uniden America Corp. Automatic frequency transfer and storage method
US5566174A (en) 1994-04-08 1996-10-15 Philips Electronics North America Corporation MPEG information signal conversion system
JP3129143B2 (en) 1994-05-31 2001-01-29 松下電器産業株式会社 Data transfer method
DK0765501T3 (en) 1994-06-15 1999-09-27 Thomson Consumer Electronics Chip card message transfer without the intervention of a microprocessor
US5689244A (en) 1994-06-24 1997-11-18 Sony Corporation Communication system and electronic apparatus
JP3458469B2 (en) 1994-07-15 2003-10-20 ソニー株式会社 Signal receiving apparatus and communication method
JP3203978B2 (en) 1994-07-25 2001-09-04 ソニー株式会社 Data transmitting / receiving device, data receiving device, and data transmitting device
US5706439A (en) 1994-09-27 1998-01-06 International Business Machines Corporation Method and system for matching packet size for efficient transmission over a serial bus
US5687316A (en) 1994-07-29 1997-11-11 International Business Machines Corporation Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data
US5586264A (en) 1994-09-08 1996-12-17 Ibm Corporation Video optimized media streamer with cache management
US5689727A (en) 1994-09-08 1997-11-18 Western Digital Corporation Disk drive with pipelined embedded ECC/EDC controller which provides parallel operand fetching and instruction execution
US5603058A (en) 1994-09-08 1997-02-11 International Business Machines Corporation Video optimized media streamer having communication nodes received digital data from storage node and transmitted said data to adapters for generating isochronous digital data streams
US5668948A (en) 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5548587A (en) 1994-09-12 1996-08-20 Efficient Networks, Inc. Asynchronous transfer mode adapter for desktop applications
US5617419A (en) 1994-09-20 1997-04-01 International Business Machines Corporation Adapting switch port and work station communication adapters to data frame types with disparate formats and data rates
JP3371174B2 (en) 1994-09-22 2003-01-27 ソニー株式会社 Packet receiver
US5632016A (en) 1994-09-27 1997-05-20 International Business Machines Corporation System for reformatting a response packet with speed code from a source packet using DMA engine to retrieve count field and address from source packet
US5619646A (en) 1994-09-27 1997-04-08 International Business Machines Corporation Method and system for dynamically appending a data block to a variable length transmit list while transmitting another data block over a serial bus
US5636362A (en) * 1994-09-28 1997-06-03 Intel Corporation Programmable high watermark in stack frame cache using second region as a storage if first region is full and an event having a predetermined minimum priority
US5828903A (en) 1994-09-30 1998-10-27 Intel Corporation System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer
US5640592A (en) 1994-09-30 1997-06-17 Mitsubishi Kasei America, Inc. System for transferring utility algorithm stored within a peripheral device to a host computer in a format compatible with the type of the host computer
JPH10512405A (en) 1994-10-31 1998-11-24 インテル・コーポレーション M & A for exchanging data, status and commands via hierarchical serial bus assembly using communication packets
US5602853A (en) 1994-11-03 1997-02-11 Digital Equipment Corporation Method and apparatus for segmentation and reassembly of ATM packets using only dynamic ram as local memory for the reassembly process
US5704052A (en) 1994-11-06 1997-12-30 Unisys Corporation Bit processing unit for performing complex logical operations within a single clock cycle
US5664124A (en) 1994-11-30 1997-09-02 International Business Machines Corporation Bridge between two buses of a computer system that latches signals from the bus for use on the bridge and responds according to the bus protocols
KR0138964B1 (en) 1994-12-14 1998-06-15 김주용 Differential code modulator with data format changer
US5526353A (en) 1994-12-20 1996-06-11 Henley; Arthur System and method for communication of audio data over a packet-based network
US5533018A (en) 1994-12-21 1996-07-02 National Semiconductor Corporation Multi-protocol packet framing over an isochronous network
US5781780A (en) 1994-12-22 1998-07-14 Texas Instruments Incorporated Power management supply interface circuitry, systems and methods
US5835733A (en) 1994-12-22 1998-11-10 Texas Instruments Incorporated Method and apparatus for implementing a single DMA controller to perform DMA operations for devices on multiple buses in docking stations, notebook and desktop computer system
US5533021A (en) 1995-02-03 1996-07-02 International Business Machines Corporation Apparatus and method for segmentation and time synchronization of the transmission of multimedia data
US5559796A (en) 1995-02-28 1996-09-24 National Semiconductor Corporation Delay control for frame-based transmission of data
US5594732A (en) 1995-03-03 1997-01-14 Intecom, Incorporated Bridging and signalling subsystems and methods for private and hybrid communications systems including multimedia systems
US5519701A (en) 1995-03-29 1996-05-21 International Business Machines Corporation Architecture for high performance management of multiple circular FIFO storage means
JP3249334B2 (en) 1995-04-06 2002-01-21 株式会社東芝 Digital interface device and digital interface method
US5655138A (en) 1995-04-11 1997-08-05 Elonex I. P. Holdings Apparatus and method for peripheral device control with integrated data compression
FI98028C (en) 1995-05-03 1997-03-25 Nokia Mobile Phones Ltd data adapter
US5793953A (en) 1995-07-07 1998-08-11 Sun Microsystems, Inc. Method and apparatus for allowing packet data to be separated over multiple bus targets
US5815678A (en) 1995-07-14 1998-09-29 Adaptec, Inc. Method and apparatus for implementing an application programming interface for a communications bus
US5787298A (en) 1995-08-18 1998-07-28 General Magic, Inc. Bus interface circuit for an intelligent low power serial bus
US5752076A (en) 1995-08-31 1998-05-12 Intel Corporation Dynamic programming of bus master channels by intelligent peripheral devices using communication packets
US5692211A (en) 1995-09-11 1997-11-25 Advanced Micro Devices, Inc. Computer system and method having a dedicated multimedia engine and including separate command and data paths
US5764939A (en) 1995-10-06 1998-06-09 Lsi Logic Corporation RISC processor having coprocessor for executing circular mask instruction
US5970236A (en) 1995-11-14 1999-10-19 Compaq Computer Corporation Circuit for selectively performing data format conversion
US5812883A (en) 1995-11-22 1998-09-22 Mitsubishi Chemical America, Inc. System for reading and storing formatting information after formatting a first storage medium and using the stored formatting information to format a second storage medium
US5991520A (en) 1996-02-02 1999-11-23 Sony Corporation Application programming interface for managing and automating data transfer operations between applications over a bus structure
US5799041A (en) 1996-02-05 1998-08-25 Xinex Networks Inc. Network for multimedia asynchronous transfer mode digital signal transmission and components thereof
US5828416A (en) 1996-03-29 1998-10-27 Matsushita Electric Corporation Of America System and method for interfacing a transport decoder to a elementary stream video decorder
US5761430A (en) 1996-04-12 1998-06-02 Peak Audio, Inc. Media access control for isochronous data packets in carrier sensing multiple access systems
KR19990044590A (en) 1996-07-15 1999-06-25 니시무로 타이죠 Device with digital interface, network system and copy protection method using the device
US5774683A (en) 1996-10-21 1998-06-30 Advanced Micro Devices, Inc. Interconnect bus configured to implement multiple transfer protocols
US5761457A (en) 1996-10-21 1998-06-02 Advanced Micro Devices Inc. Inter-chip bus with fair access for multiple data pipes
US5832245A (en) 1996-10-21 1998-11-03 Advanced Micro Devices, Inc. Method for isochronous flow control across an inter-chip bus
US5906002A (en) 1997-02-10 1999-05-18 International Business Machines Corporation Method and apparatus for saving and restoring the context of registers using different instruction sets for different sized registers
US5835793A (en) 1997-05-02 1998-11-10 Texas Instruments Incorporated Device and method for extracting a bit field from a stream of data
US5938752C1 (en) 1997-05-20 2002-02-05 Microsoft Corp System and method for encapsulating legacy data transport protocols for ieee 1394 serial bus
US6085270A (en) 1998-06-17 2000-07-04 Advanced Micro Devices, Inc. Multi-channel, multi-rate isochronous data bus
US6167471A (en) 1998-10-14 2000-12-26 Sony Corporation Method of and apparatus for dispatching a processing element to a program location based on channel number of received data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
EP0715252A1 (en) * 1994-11-14 1996-06-05 Nec Corporation A bit field peripheral

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"EXTENDED ROTATE AND MERGE INSTRUCTIONS WITH BUILT-IN MASKS", IBM TECHNICAL DISCLOSURE BULLETIN,US,IBM CORP. NEW YORK, vol. 32, no. 11, 1 April 1990 (1990-04-01), pages 135 - 136, XP000097636, ISSN: 0018-8689 *
"SELECTIVE REGISTER BIT SET/RESET MECHANISM", IBM TECHNICAL DISCLOSURE BULLETIN,US,IBM CORP. NEW YORK, vol. 30, no. 12, 1 May 1988 (1988-05-01), pages 402 - 405, XP000021673, ISSN: 0018-8689 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103460181A (en) * 2011-03-30 2013-12-18 飞思卡尔半导体公司 Integrated circuit device and methods of performing bit manipulation therefor
EP2691850A4 (en) * 2011-03-30 2015-06-03 Freescale Semiconductor Inc Integrated circuit device and methods of performing bit manipulation therefor
US9639362B2 (en) 2011-03-30 2017-05-02 Nxp Usa, Inc. Integrated circuit device and methods of performing bit manipulation therefor
CN103460181B (en) * 2011-03-30 2017-10-24 飞思卡尔半导体公司 IC-components and the method for performing its manipulation
CN103460182A (en) * 2011-04-01 2013-12-18 英特尔公司 Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
WO2014158674A1 (en) * 2013-03-13 2014-10-02 Intel Corporation Techniques for enabling bit-parallel wide string matching with a simd register

Also Published As

Publication number Publication date
US6523108B1 (en) 2003-02-18
AU1789401A (en) 2001-06-04

Similar Documents

Publication Publication Date Title
US6523108B1 (en) Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
US6799232B1 (en) Automatic byte swap and alignment for descriptor-based direct memory access data transfers
US8599855B2 (en) Network protocol header alignment
CA2124452C (en) Method and apparatus for processing data within stations of a communication network
US7464243B2 (en) Method and apparatus for arbitrarily initializing a portion of memory
TWI259694B (en) Apparatus and system of communicating message request transaction
US6513108B1 (en) Programmable processing engine for efficiently processing transient data
US6272621B1 (en) Synchronization and control system for an arrayed processing engine
CN101053234B (en) Method and apparatus for exceeding DFA image with entered grouping data
JP2002541732A5 (en)
JP2003533829A (en) Method and system for performing permutations using improved omega and flip stage based permutation instructions
US6449706B1 (en) Method and apparatus for accessing unaligned data
US6185633B1 (en) DMA configurable receive channel with memory width N and with steering logic compressing N multiplexors
US7224701B2 (en) Method and apparatus for implementing frame header alterations using byte-wise arithmetic logic units
US7124231B1 (en) Split transaction reordering circuit
CN1781293B (en) System and method for modifying data transferred from a source to a destination
JPH09224041A (en) Device and method for data packing by addition
Laufer et al. PCI-PipeRench and the SwordAPI: A system for stream-based reconfigurable computing
CN115917473A (en) System for building data structure by using highly extensible algorithm realized by distributed LPM
US7039054B2 (en) Method and apparatus for header splitting/splicing and automating recovery of transmit resources on a per-transmit granularity
US6332188B1 (en) Digital signal processor with bit FIFO
US7185153B2 (en) Packet assembly
US7210008B2 (en) Memory controller for padding and stripping data in response to read and write commands
US6609142B1 (en) Method of performing multiplication with accumulation in a Galois body
US6862639B2 (en) Computer system including a receiver interface circuit with a scatter pointer queue and related methods

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase