Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
Title: Semiconductor substrate processing chamber and accessory attachment interfacial structure
Patent Number: 7,192,487 Issued on 03/20/2007 to Carpenter,   et al.

Title: System and method for silver recovery and monitoring
Patent Number: 6,991,669 Issued on 01/31/2006 to Partridge,   et al.

Title: Cooling system for electronic devices
Patent Number: 6,885,555 Issued on 04/26/2005 to Greco

Title: Control method for video guidance sensor system
Patent Number: 6,888,476 Issued on 05/03/2005 to Howard,   et al.

Title: Lubricant monitoring system
Patent Number: 6,776,261 Issued on 08/17/2004 to Eriksen,   et al.

Title: Car body part and method of its production
Patent Number: 6,938,946 Issued on 09/06/2005 to Hock,   et al.

Title: Electron-emitting device, electron source using the electron-emitting devices, and image-forming apparatus using the electron source
Patent Number: 6,888,296 Issued on 05/03/2005 to Motoi,   et al.

Title: Thread-guiding device for open-end spinning frames
Patent Number: 6,904,745 Issued on 06/14/2005 to Badiali,   et al.

Title: Mask and method of manufacturing the same, electroluminescence device and method of manufacturing the same, and electronic instrument
Patent Number: 6,875,542 Issued on 04/05/2005 to Yotsuya

Title: Optical module for high-speed bidirectional transceiver
Patent Number: 6,939,058 Issued on 09/06/2005 to Gurevich,   et al.

Title: Apparatus for growing low defect density silicon carbide
Patent Number: 6,863,728 Issued on 03/08/2005 to Vodakov,   et al.

Title: Slotted substrate and method of making
Patent Number: 6,938,985 Issued on 09/06/2005 to Ottenheimer,   et al.

Title: Radiation image radiographing system
Patent Number: 6,972,425 Issued on 12/06/2005 to Tamakoshi,   et al.

Title: Height adjusting mechanism for a tape guide pin and tape device
Patent Number: 6,870,702 Issued on 03/22/2005 to Tanaka

Title: Base of golf club bag
Patent Number: 6,938,762 Issued on 09/06/2005 to Cheng

Title: Foldable chair with safety locks
Patent Number: 6,938,951 Issued on 09/06/2005 to Tseng

Title: Valve seal with pressure relief channels and expansion voids
Patent Number: 6,938,879 Issued on 09/06/2005 to Bancroft,   et al.

Title: SEMICONDUCTOR DEVICE COMPRISING METAL SILICIDE FILMS FORMED TO COVER GATE ELECTRODE AND SOURCE-DRAIN DIFFUSION LAYERS AND METHOD OF MANUFACTURING THE SAME WHEREIN THE SILICIDE ON GATE IS THICK
Patent Number: 6,869,867 Issued on 03/22/2005 to Miyashita,   et al.

Title: Master cylinder for a brake or clutch of a motorcycle or bike
Patent Number: 6,871,729 Issued on 03/29/2005 to Huster,   et al.

Title: Board storage and display device
Patent Number: 6,938,864 Issued on 09/06/2005 to Simonian,   et al.

Title: Methods and materials for generating SH3 domains with tailored binding properties
Patent Number: 6,794,144 Issued on 09/21/2004 to Saksela,   et al.

Title: Switching device to linearly conduct a current between a gradient amplifier and a gradient coil assembly of an MRI system
Patent Number: 6,900,638 Issued on 05/31/2005 to Yair,   et al.

Title: Positive electrode active material, non-aqueous electrolyte secondary cell and method for preparation thereof
Patent Number: 6,805,996 Issued on 10/19/2004 to Hosoya

Title: Nucleic acid amplification
Patent Number: 6,794,141 Issued on 09/21/2004 to Erlander,   et al.

Title: Method of cleaning contaminants from the surface of a substrate
Patent Number: 6,783,599 Issued on 08/31/2004 to Gale,   et al.

Title: Iterative optimization in the design of binding proteins
Patent Number: 6,794,136 Issued on 09/21/2004 to Eisenberg,   et al.

Title: Process for forming polymer structures containing an oxygen sensor
Patent Number: 6,794,191 Issued on 09/21/2004 to Putnam,   et al.

Title: Thin permanent-magnet film and process for producing the same
Patent Number: 6,805,980 Issued on 10/19/2004 to Uehara

Title: Polymeric solid electrolyte and lithium secondary cell using the same
Patent Number: 6,806,004 Issued on 10/19/2004 to Iwamoto,   et al.

Title: Method of assaying a specimen using a reagent
Patent Number: 6,794,193 Issued on 09/21/2004 to Fujimoto

Title: Nonaqueous electrolyte secondary battery having a negative electrode containing carbon fibers and carbon flakes
Patent Number: 6,806,003 Issued on 10/19/2004 to Yamaguchi,   et al.

Title: Pyrromethene metal complex and light emitting device composition and light emitting devices using the same
Patent Number: 6,805,978 Issued on 10/19/2004 to Murase,   et al.

Title: Organic electroluminescent device and preparation thereof
Patent Number: 6,805,976 Issued on 10/19/2004 to Do,   et al.

Title: Bench
Patent Number: 6,883,873 Issued on 04/26/2005 to Haney,   et al.

Title: Powder coating compartment comprising at least one manual coating station
Patent Number: 6,783,595 Issued on 08/31/2004 to Segner,   et al.

Title: Method for creating a lateral overflow drain, anti-blooming structure in a charge coupled device
Patent Number: 6,794,219 Issued on 09/21/2004 to Stevens,   et al.

Title: Interpolation of video compression frames
Patent Number: 6,816,552 Issued on 11/09/2004 to Demos

Title: Efficient instant messaging using a telephony interface
Patent Number: 6,816,578 Issued on 11/09/2004 to Kredo,   et al.

Title: Technique for attributing communication call transactions to user affiliations and adjusting billings thereof
Patent Number: 6,816,580 Issued on 11/09/2004 to Timmins

Title: System and method of configuring a network element
Patent Number: 6,816,590 Issued on 11/09/2004 to Pike,   et al.

Title: Method of fabricating semiconductor integrated circuit device
Patent Number: 6,806,102 Issued on 10/19/2004 to Yamauchi

Title: Remote control for a hearing aid, and applicable hearing aid
Patent Number: 6,816,600 Issued on 11/09/2004 to Jakob,   et al.

Title: Echo cancellation in digital data transmission system
Patent Number: 6,816,592 Issued on 11/09/2004 to Kirla

Title: Method for the exchange of data between controls of machines, particularly robots
Patent Number: 7,123,991 Issued on 10/17/2006 to Graf,   et al.

Title: Irrigation controller
Patent Number: 7,123,993 Issued on 10/17/2006 to Freeman,   et al.

Title: Method and system for transmission of seismic data
Patent Number: 7,124,028 Issued on 10/17/2006 to Ray,   et al.

Title: Multiband receiver and method associated therewith
Patent Number: 7,120,406 Issued on 10/10/2006 to van der Burgt

Title: Railing system
Patent Number: 6,752,385 Issued on 06/22/2004 to Zen,   et al.

Title: Customizable nest with the option of conversion to a permanent nest
Patent Number: 6,752,391 Issued on 06/22/2004 to Euker

Title: Method of detecting plastics articles, and a detector device
Patent Number: 6,888,356 Issued on 05/03/2005 to Jean-Raoul

Title: Orthogonal electrical connection using a ball edge array
Patent Number: 6,784,372 Issued on 08/31/2004 to Yuen,   et al.

Title: Low temperature geothermal system
Patent Number: 6,820,421 Issued on 11/23/2004 to Kalina

Title: Amorphous silicon photovoltaic devices
Patent Number: 6,784,361 Issued on 08/31/2004 to Carlson,   et al.

Title: Ball formation method and ball forming device used in a wire bonding apparatus
Patent Number: 6,784,394 Issued on 08/31/2004 to Nishiura

Title: CHEMICALLY AMPLIFIED PHOTORESIST AND PROCESS FOR STRUCTURING SUBSTITUENTS USING TRANSPARENCY ENHANCEMENT OF RESIST COPOLYMERS FOR 157 NM PHOTOLITHOGRAPHY THROUGH THE USE OF FLUORINATED CINNAMI
Patent Number: 6,806,027 Issued on 10/19/2004 to Hohle,   et al.

Title: Solar-based power generating system
Patent Number: 6,820,420 Issued on 11/23/2004 to Hebert

Title: Portable information terminal device
Patent Number: 6,942,060 Issued on 09/13/2005 to Sugiura,   et al.

Title: Combustor module
Patent Number: 6,820,424 Issued on 11/23/2004 to Oechsle,   et al.

Title: Mold release and anti-blocking coating for powder-free natural of synthetic rubber articles
Patent Number: 6,784,397 Issued on 08/31/2004 to Li,   et al.

Title: MRAM cell having frustrated magnetic reservoirs
Patent Number: 6,807,092 Issued on 10/19/2004 to Braun

Title: Map image processing apparatus and method for forming birds-eye view from two-dimensional map image
Patent Number: 6,900,817 Issued on 05/31/2005 to Uesugi

Title: Process of manufacturing a semiconductor device
Patent Number: 6,780,681 Issued on 08/24/2004 to Aoki

Title: Apparatus and method for providing items of value in cooperation with operation of a companion device
Patent Number: 6,990,392 Issued on 01/24/2006 to Meister,   et al.

Title: Folding baby stroller system and method
Patent Number: 6,991,248 Issued on 01/31/2006 to Valdez,   et al.

Title: Seatback audio system
Patent Number: 6,991,289 Issued on 01/31/2006 to House

Title: Shield connection structure of cable
Patent Number: 6,784,368 Issued on 08/31/2004 to Imai,   et al.

Title: Hydraulic braking system operated by an external force
Patent Number: 6,991,303 Issued on 01/31/2006 to Woll

Title: Method for solubilising asphaltenes in a hydrocarbon mixture
Patent Number: 7,122,113 Issued on 10/17/2006 to Cornelisse

Title: Apparatus for needling a non-woven material
Patent Number: 6,948,221 Issued on 09/27/2005 to Fuchs

Title: Stacked multi-chip semiconductor package improving connection reliability of stacked chips
Patent Number: 7,119,425 Issued on 10/10/2006 to Jeong,   et al.

Title: Device for displaying images by projection, comprising dichroic filters with a gradient
Patent Number: 6,956,551 Issued on 10/18/2005 to Sacre,   et al.

Title: Fish gelatin compositions containing a hydrocolloid setting system
Patent Number: 6,770,294 Issued on 08/03/2004 to Scott,   et al.

Title: Method and related circuitry for buffering output signals of a chip with even number driving circuits
Patent Number: 6,888,392 Issued on 05/03/2005 to Wei,   et al.

Title: Luminaire globe having low glare bandless seam
Patent Number: 6,796,687 Issued on 09/28/2004 to Hudak,   et al.

Title: Settee with a foldable tray-support unit
Patent Number: 6,767,056 Issued on 07/27/2004 to Tseng

Method and system for performing shift operations Number:6,934,729 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: Method and system for performing shift operations

Abstract: A method and an apparatus for performing a shift operation on an operand. The method and apparatus configures input lines to comprise a first part that includes the bits in order representing various shift amounts in a first direction and a second part that includes bits ordered representing various shift amounts in a second direction. The shift is then performed by selecting the appropriate bits from the input line to create the result.

Patent Number: 6,934,729 Issued on 08/23/2005 to Abernathy,   et al.


Inventors: Abernathy; Christopher Michael (Austin, TX); Cottier; Scott Raymond (Austin, TX); Gervais; Gilles (Austin, TX)
Assignee: International Business Machines Corporation (Armonk, NY)
Appl. No.: 981902
Filed: October 18, 2001

Current U.S. Class: 708/209
Intern'l Class: G06F 005/01
Field of Search: 708/209


References Cited [Referenced By]

U.S. Patent Documents
5896305Apr., 1999Bosshart et al.
6675181Jan., 2004Tovey.
6675182Jan., 2004Hofstee et al.
6757819Jun., 2004Hoyle et al.
2003/0023646Jan., 2003Lin et al.

Primary Examiner: Malzahn; D. H.
Attorney, Agent or Firm: Carr LLP, Gerhardt; Diana Roberts

Claims



1. A method of shifting a first operand, the method comprising the steps of:

configuring a data input line for each byte of the first operand, each data input line comprising a first part and a second part, corresponding to successive shift amounts, wherein the first part of the data input line corresponds to a shift in a first direction and the second part of the data input line corresponds to a shift in a second direction; and

selecting from the data input line for each byte, the bit value of which corresponds to the value of the shift amount and shift direction, wherein the shift direction is used to select a byte from the first part or the second part.

2. The method of claim 1, wherein the operand is at least one of a 16-bit operand, a 32-bit operand, a 64-bit operand, 128-bit operand, a 256-bit operand, and a 512-bit operand.

3. The method of claim 1, wherein at least one of the first part and the second comprises zeros to fill vacated bits with a zero.

4. A method of shifting a first operand, the method comprising the steps of:

extracting from an instruction a direction to shift the first operand;

extracting from a second operand an amount to shift the first operand;

configuring a data input line for each bit of each byte of the first operand, each data input line comprising a first part and a second part, wherein the first part comprises bits ordered corresponding to shift amounts in a first direction and the second part comprises bits ordered corresponding to shift amounts in a second direction; and

selecting from each data input line the bit corresponding to the value of the shift amount and shift direction, wherein the shift direction is used to select a bit from the first part or the second part.

5. The method of claim 4, wherein at least one of the first part and the second part comprises zeros to fill vacated bits with a zero.

6. The method of claim 4, wherein the second operand is set to zero to provide the second part of the data input lines.

7. A method of performing vector permute operations, the method comprising the steps of:

receiving an instruction for a vector permute operation;

decoding the instruction to determine an instruction type, a first operand, and a second operand;

selecting from one or more resources the first operand;

selecting from one or more resources the second operand;

extracting from the instruction a direction to shift the first operand;

extracting from the second operand an amount to shift the first operand;

configuring a third operand to comprise the direction and the amount in one or more bytes;

performing a second function on the first operand and the second operand according to the values in the third operand;

performing a shifter function on the first operand and the second operand according to the values in the third operand;

determining whether the instruction type corresponds to the second function or to the shifter function;

upon a determination that the instruction type corresponds to the second function, setting the result of the vector permute operation to the output of the second function; and

upon a determination that the instruction type corresponds to the shifter function, setting the result of the vector permute operation to the output of the shifter function.

8. The method of claim 7, wherein the step of performing the shifter function further comprises filling vacated bits with zeros with at least one of a first part and a second part of data input lines that comprise zeros.

9. The method of claim 7, wherein the second function is a CROSSBAR function.

10. The method of claim 7, wherein the step of performing the shifter function further comprises the second operand being set to zero to provide a second part of data input lines.

11. An apparatus for shifting a first operand, the apparatus comprising:

means for configuring for each bit of each byte of the first operand a data input line, comprising a first part and a second part, corresponding to successive shift amounts, wherein the first part of the data input line corresponds to a shift in a first direction and the second part of the data input line corresponds to a shift in a second direction; and

means for selecting from the data input line for each bit the bit corresponding to the value of the shift amount and shift direction, wherein the shift direction is used to select a bit from the first part or the second part.

12. The apparatus of claim 11, wherein the operand is at least one of a 16-bit operand, a 32-bit operand, a 64-bit operand, 128-bit operand, a 256-bit operand, and a 512-bit operand.

13. The apparatus of claim 11, wherein at least one of the first part and the second part comprises zeros to fill vacated bits with a zero.

14. An apparatus for shifting a first operand, the apparatus comprising:

means for extracting from an instruction a direction to shift the first operand;

means for extracting from a second operand an amount to shift the first operand;

means for configuring a data input line for each bit of each byte of the first operand, each data input line comprising a first part and a second part, wherein the first part comprises bits ordered corresponding to shift amounts in a first direction and the second part comprises bits ordered corresponding to shift amounts in a second direction; and

means for selecting from each data input line the bit corresponding to the value of the shift amount and shift direction, wherein the shift direction is used to select a bit from the first part or the second part.

15. The apparatus of claim 14, wherein at least one of the first part and the second part comprises zeros to fill vacated bits with a zero.

16. The apparatus of claim 14, wherein the second operand is set to zero to provide the second part of the data input lines.

17. An apparatus for performing vector permute operations, the apparatus comprising:

means for receiving an instruction for a vector permute operation;

means for decoding the instruction to determine an instruction type, a first operand, and a second operand;

means for selecting from one or more resources the first operand;

means for selecting from one or more resources the second operand;

means for extracting from the instruction a direction to shift the first operand;

means for extracting from the second operand an amount to shift the first operand;

means for configuring a third operand to comprise the direction and the amount in one or more bytes;

means for performing a second function on the first operand and the second operand according to the values in the third operand;

means for performing a shifter function on the first operand and the second operand according to the values in the third operand;

means for determining whether the instruction type corresponds to the second function or to the shifter function;

means for, upon a determination that the instruction type corresponds to the second function, setting the result of the vector permute operation to the output of the second function; and

means for, upon a determination that the instruction type corresponds to the shifter function, setting the result of the vector permute operation to the output of the shifter function.

18. The apparatus of claim 17, wherein the means for performing the shifter function further comprises filling vacated bits with zeros with at least one of a first part and a second part of data input lines that comprise zeros.

19. The apparatus of claim 17, wherein the second function is a CROSSBAR function.

20. The apparatus of claim 17, wherein the means for performing the shifter function further comprises the second operand being set to zero to provide a second part of data input lines.

21. A computer program product for shifting a first operand, the computer program product having a medium with a computer program embodied thereon, the computer program comprising:

computer program code for configuring for each bit of each byte of the first operand a data input line, comprising a first part and a second part, corresponding to successive shift amounts, wherein the first part of the data input line corresponds to a shift in a first direction and the second part of the data input line corresponds to a shift in a second direction; and

computer program code for selecting from the data input line for each bit the bit corresponding to the value of the shift amount and shift direction, wherein the shift direction is used to select a bit from the first part or the second part.

22. The computer program product of claim 21, wherein the operand is at least one of a 16-bit operand, a 32-bit operand, a 64-bit operand, 128-bit operand, a 256-bit operand, and a 512-bit operand.

23. The computer program product of claim 21, wherein at least one of the first part and the second part comprises zeros to fill vacated bits with a zero.

24. A computer program product for shifting a first operand, the computer program product having a medium with a computer program embodied thereon, the computer program comprising:

computer program code for extracting from an instruction a direction to shift the first operand;

computer program code for extracting from a second operand an amount to shift the first operand;

computer program code for configuring a data input line for each bit of each byte of the first operand, each data input line comprising a first part and a second part, wherein the first part comprises bits ordered corresponding to shift amounts in a first direction and the second part comprises bits ordered corresponding to shift amounts in a second direction; and

computer program code for selecting from each data input line the bit corresponding to the value of the shift amount and shift direction, wherein the shift direction is used to select a bit from the first part or the second part.

25. The computer program product of claim 24, wherein at least one of the first part and the second part comprises zeros to fill vacated bits with a zero.

26. The computer program product of claim 24, wherein the second operand is set to zero to provide the second part of the data input lines.

27. A computer program product for performing vector permute operations, the computer program product having a medium with a computer program embodied thereon, the computer program comprising:

computer program code for receiving an instruction for a vector permute operation;

computer program code for decoding the instruction to determine an instruction type, a first operand, and a second operand;

computer program code for selecting from one or more resources the first operand;

computer program code for selecting from one or more resources the second operand;

computer program code for extracting from the instruction a direction to shift the first operand;

computer program code for extracting from the second operand an amount to shift the first operand;

computer program code for configuring a third operand to comprise the direction and the amount in one or more bytes;

computer program code for performing a second function on the first operand and the second operand according to the values in the third operand;

computer program code for performing a shifter function on the first operand and the second operand according to the values in the third operand;

computer program code for determining whether the instruction type corresponds to the second function or to the shifter function;

computer program code for, upon a determination that the instruction type corresponds to the second function, setting the result of the vector permute operation to the output of the second function; and

computer program code for, upon a determination that the instruction type corresponds to the shifter function, setting the result of the vector permute operation to the output of the shifter function.

28. The computer program product of claim 27, wherein at least one of the first part and the second comprises zeros to fill vacated bits with a zero.

29. The computer program product of claim 27, wherein the second function is a CROSSBAR function.

30. The computer program product of claim 27, wherein the second operand is set to zero to provide the second part of the data input lines.
Description



BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates generally to computer architectures and, more particularly, to a method and an apparatus for shifting an operand a specified direction and amount.

2. Description of Related Art

Computer processors are constantly being designed with additional capabilities. In particular, some processors, such as the PowerPC designed by IBM Corp., Apple Computers Corp., and Motorola, Inc., are being modified to provide multimedia extensions, such as the Vector Multimedia Extension (VMX). Some extensions such as a shift instruction, however, require additional processing and, therefore, may not be as efficient as desired.

Shift instructions frequently utilize multiple operands to specify the desired action. A first operand typically specifies the operand that is to be shifted left or right, a second operand typically specifies the amount that the first operand is to be shifted, and a third operand typically specifies the location to place the result. Additional, or fewer, operands may be present depending on the implementation.

Generally, the second operand that specifies the amount must be decoded to extract the necessary information and to format the information appropriately. The process of decoding the second operand, however, is processing-intensive and requires additional space.

Therefore, there is a need to provide a method and an apparatus for efficiently shifting a value a specified amount and direction.

SUMMARY

The present invention provides a method and an apparatus for performing a shift operation on an operand. The method and apparatus configures an input line comprising a first part that includes the bits in order representing various shift amounts in a first direction and a second part that includes bits ordered representing various shift amounts in a second direction. The shift amount is then utilized to index into the input line and select the appropriate bits to create the result.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following description taken in conjunction with the accompanying drawings, in which:

FIG. 1 is a schematic diagram of a typical circuit that embodies the present invention;

FIG. 2 is a schematic diagram of a circuit that illustrates one embodiment of the present invention that shifts an operand a specified direction and amount; and

FIG. 3 is a data flow diagram illustrating one embodiment of the present invention in which an operand is shifted a specified direction and amount.

DETAILED DESCRIPTION

In the following discussion, numerous specific details are set forth to provide a thorough understanding of the present invention. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In other instances, well-known elements have been illustrated in schematic or block diagram form in order not to obscure the present invention in unnecessary detail. Additionally, for the most part, details concerning operation and the connectivity of the individual components of the present invention, and the like, have been omitted inasmuch as such details are not considered necessary to obtain a complete understanding of the present invention, and are considered to be within the skills of persons of ordinary skill in the relevant art.

It is further noted that, unless indicated otherwise, all functions described herein may be performed in either hardware or software, or some combination thereof. In a preferred embodiment, however, the functions are implemented in hardware in order to provide the most efficient implementation. Alternatively, the functions may be performed by a processor such as a computer or an electronic data processor in accordance with code such as computer program code, software, and/or integrated circuits that are coded to perform such functions, unless indicated otherwise.

Referring to FIG. 1 of the drawings, the reference numeral 100 generally designates a circuit, which may be particularly useful in performing a vector shift instruction, such as a Vector Shift Left Octet (vslo), a Vector Shift Right Octet (vsro), and/or the like, of the Vector Multimedia Extension (VMX) standard for the PowerPC designed and developed by Apple Computers, Inc., IBM, Corp., and Motorola, Inc., embodying features of the present invention. The circuit 100 is exemplified herein as coexisting with another circuit, in this case a crossbar, commonly referred to as an XBAR function, that is capable of implementing many vector permute operations, such as vector packs, unpacks, merges, splats, and vector shift left double instructions, or the like, to demonstrate that additional efficiencies may be achieved by implementing the circuit 100 in conjunction with another compatible circuit. The circuit 100 may, however, be implemented with other types of circuits or individually. Furthermore, the discussion that follows and FIGS. 2 and 3 illustrate the present invention in terms of a 128-bit shift instruction for purposes of illustration only and should not be construed so as to limit the present invention in any manner. For example, the circuit 100 could be used with other types of circuits, individually, other bit lengths such as 64, 256, or the like, and the like, and is considered to be obvious to a person of ordinary skill in the art upon a reading of the present disclosure.

The circuit 100 generally comprises a decoder 110 configured for receiving and decoding an instruction 112. Generally, an instruction has the following format:


where:
    • operation is the requested action, such as vslo, vsro, or the like;
    • VT specifies the destination of the output;
    • VA specifies the operand to be shifted; and
    • VB specifies the operand that contains the shift amount.


  • The VA and VB operands may typically be any allowable data source (not shown), such as register files, bypasses, data forwarding, load ports, and/or the like, that is selectable via a mux (not shown). In FIG. 1, VA net 114 and VB net 126 represent the VA and VB operands, respectively, that are preferably sourced via mux from one or more data sources.

    Preferably, one or more bits of the operand specifying the shift amount, e.g., bits 121-124 of VB net 126 of a vslo and a vsro instruction, are coupled to a mux 128. The select line of the mux 128 is controlled by the decoder 110, which selects the shift amount bits and shift direction when the decoder determines that the instruction 112 is a vslo or vsro instruction. The mux 128 is configured to latch the shift amount from the VB net 126, and an indication of the shift direction from the decoder, referred to as the VC operand 130, to the shifter 122 and the crossbar 124. In the preferred embodiment, the VC operand 130 is configured as 16 byte slices (16 byte slices times 8 bits/byte is 128 total bits). The shift direction is preferably specified in bit 3, which is from the decoder 110, and the shift amount, which is from bits of the VB net 126, is preferably specified in bits 4-7 of each byte slice, bits 0-2 being unused. The shift direction is preferably set to a "0" to indicate a left shift and to a "1" to indicate a right shift. As will be appreciated by one skilled in the art, each byte slice contains the same value and will be in the range of 0-31, with 0-15 indicating a left shift of 0-15 bytes and 16-31 indicating a right shift of 0-15 bytes.

    VB net 126 is also coupled to a mux 132, whose select line is controlled by the decoder 110. The mux 132 is configured to allow the decoder 110 to select between the sourced operand, i.e., VB net 126, or a constant zero value. In the event that the decoder 110 determines that the instruction 112 is a shift instruction, such as vslo, vsro, or the like, the decoder 110 sets the select line of the mux 132 such that the zero constant value is latched as a VB operand 134 to the shifter 122 and crossbar 124.

    It should be noted that the circuit 100 assumes that the shift instructions shifts the VA operand 120 left or right and fills the vacated positions with zeroes. Implementing other types of shifts, such as a circular shift, a signed shift, and/or the like, may be designed similarly and is considered obvious to a person of ordinary skill in the art upon a reading of the present disclosure.

    The shifter 122 and the crossbar 124 is configured to provide a shifter output 136 and an crossbar output 138, respectively, preferably to a mux 140, which is used to select the output of one or more circuits, based on the instruction 112. Accordingly, the shifter output 136 is chosen for vslo and vsro instructions, and the crossbar output 138 or any other output done in parallel with the shifter and crossbar are chosen for all other instructions. Alternatively, data forwarding (not shown) may be enabled in order to obtain greater efficiencies.

    FIG. 2 is a schematic diagram depicting a circuit that may be designed to perform operations of the shifter 122 (FIG. 1) in accordance with one embodiment of the present invention that receives a 128-bit VA operand 120 (FIG. 1) to shift, a 128-bit VB (zero filled) operand 134 (FIG. 1), and a VC operand 130 (FIG. 1) that specifies the shift direction and the shift amount as discussed above. Accordingly, VA(x1-x2) represents a byte corresponding to the x1th bit to the x2th bit of the VA operand 120, VB(y1-y2) represents a byte corresponding to the y1th bit to the y2th bit of the VB operand 134, and VC(z1-z2) represents the z1th bit to the z2th bit of the VC operand 130. As noted above, the illustrated shifter is a byte shifter. Shifters of other amounts, such as words or bits, may be designed and are considered to be within the skills of a person of ordinary skill in the art upon a reading of the present disclosure.

    As will be appreciated by one skilled in the art, the bits contained in each byte slice of the VC operand 130 that specify the shift direction and the shift amount, are used as a single 5-bit value ranging from 0-31. The 5-bit value is used as the select line of muxes 210 to select the corresponding byte of the designated input lines, forming the dout lines. The connection of the bits of the VA operand 120 and the VB operand 134 as shown shifts the VA operand to the left or right from 0 to 15 bytes, as specified by the 5-bit value.

    For example, a vslo shift instruction with a shift value of 1 results in a VC operand 130 with each byte slice containing a "xxx00001" (binary), and, therefore, each select line of the muxes 210 are set to "1" (hex). As a result, the byte corresponding to the second mux data line (the first mux data line representing a shift of zero) is selected: dout(0-7)=VA(8-15), dout(8-15)=VA(16-23), . . . , dout(120-127)=VB(0-7). This equates to a shift left by one byte, bringing in one byte from VB, which contains all zeros.

    For another example, a vsro shift instruction with a shift value of 15 results in a VC operand 130 with each byte slice containing "xxx11111" (binary), and, therefore, each select line of the muxes 210 are set to "1F" (hex). As a result, the byte corresponding to the thirty-second mux data line, i.e., the last mux data line, is selected: dout(0-7)=VB(8-15), dout(8-15)=VB(16-23), . . . , dout(120-127)=VA(0-7). This equates to a shift right by 15 bytes, filling vacated bytes of the VA operand with zeroes from the VB operand.

    FIG. 3 is a flow chart depicting steps that may be performed by the circuit 100 in accordance with one embodiment of the present invention that shifts an operand to the left or right a specified number of bytes. Processing begins in step 310, wherein a shift instruction, such as vslo and/or vsro, is received and decoded. The shift instruction is decoded to determine, among other things, the type of instruction and hence the shift direction for vslo and vsro instructions. Upon receiving the instruction, in steps 320 and 322, the VA operand and the VB operand is retrieved, respectively, from the specified source, such as a register file, bypass, load port, and/or the like, as is described above.

    In step 324, the VC operand is constructed. Preferably, as discussed above with reference to FIG. 1, the VC operand 130 comprises 16 bytes, each byte containing the shift direction in bit 3 and the shift amount in bits 4-7. Also after step 322, in step 326, the VB operand 134 is filled with zeroes for the vslo and vsro instructions.

    After steps 320, 324 and 326, processing proceeds to step 328, wherein the VA operand 120 is shifted in the amount and direction specified by the VC operand 130, filling the vacated bytes with the value of the VB operand 134.

    It is understood that the present invention can take many forms and embodiments. Accordingly, several variations may be made in the foregoing without departing from the spirit or the scope of the invention. For example, different data widths, such as 8, 16, 32, 64, 256, 512, and the like may be used, differing bit positions may be used for the VC mux selects, differing shift amounts, and/or different sources for the VC mux selects may be used.

    Having thus described the present invention by reference to certain of its preferred embodiments, it is noted that the embodiments disclosed are illustrative rather than limiting in nature and that a wide range of variations, modifications, changes, and substitutions are contemplated in the foregoing disclosure and, in some instances, some features of the present invention may be employed without a corresponding use of the other features. Many such variations and modifications may be considered obvious and desirable by those skilled in the art based upon a review of the foregoing description of preferred embodiments. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the invention.

    *


    Free Web Sudoku Puzzles.
    Solve with your browser.
    4           9 2  
    9 6     7 8      
      8             1
        1   4 6      
      2           9  
          3 2   8    
    1             3  
          4 8     7 6
      7 3           9
    What is it?



    Add Your Site · Terms Of Service · Privacy Policy


    DISCLAIMER
    Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

    For More Specific Information VIEW OUR TERMS OF SERVICE.

    Thank you and Enjoy!