IP Library Granted Patent US 9,135,008
Granted Patent B2
US 9,135,008 · App. 13/392,925 · Granted Sep 15, 2015

Device and method for performing conditional bitwise set/clear/toggle manipulations in a general purpose register

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,135,008
App. No.
13/392,925
Granted
Sep 15, 2015
Kind
B2
Abstract

A device and a method for performing bitwise manipulation is provided. Multiple bitwise logic circuits are coupled to an instruction decoder, a register array and a rotator. Each bitwise logic circuit includes input multiplexers connected to an output multiplexer. The instruction decoder receives a bit manipulation instruction and sends to each corresponding input multiplexer a control signal based on a type of the instruction. Each input multiplexer of each bitwise logic circuit receives a control signal, a constant signal that has a value that is indifferent to the value of the mask, and a mask affected signal that has a value that is responsive to a value of an associated mask bit. Each input multiplexer selects between the constant signal and the mask affected signal based on the control signal, and outputs a selected signal. Each output multiplexer receives selected signals from each of the corresponding input multiplexers, and elects between the selected signal based on a value of an associated manipulated register bit and based on a value an associated control register bit.

Claims (99)

1. A device, comprising:

an instruction decoder configured to:

receive a bit manipulation instruction; and

send a set of control signals based on a type of the bit manipulation instruction; and

multiple bitwise logic circuits, each bitwise logic circuit being coupled to the instruction decoder, wherein:

each bitwise logic circuit comprises one or more input multiplexers, each input multiplexer including a control input coupled to the instruction decoder a first data input, a second data input, and a data output coupled to an output multiplexer; and

each bitwise logic circuit is associated with manipulated register bits, mask bits, and control register bits that are different from other manipulated register bits, other mask bits, and other control register bits associated with each other bitwise logic circuit;

wherein each input multiplexer of each bitwise logic circuit is configured to:

receive one of the control signals at the control input, receive a constant signal at the first data input, wherein the constant signal has a value that is indifferent to a value of a mask, and receive a mask affected signal at the second data input, wherein the mask affected signal has a value that is responsive to a value of an associated mask bit;

select between the constant signal and the mask affected signal based on the control signal; and

output a selected signal; and

wherein each output multiplexer is configured to:

receive the selected signal from each of the input multiplexers;

select between the selected signals based on a value of the associated manipulated register bits and based on a value of the associated control register bits; and

output an output signal.

2. The device according to claim 1 , further comprising a rotator configured to rotate, by a shift factor indicated by the bit manipulation instruction, a content of a control register to provide to each bitwise logic circuit an associated control logic circuit bit.

3. The device according to claim 1 , wherein:

the instruction decoder is further configured to generate a different set of control signals per each type of bit manipulation instruction;

the types of the bit manipulation instructions comprise a bit toggle instruction; and

each bitwise logic circuit is configured to selectively toggle the associated manipulated register bit based on a value of the associated control register bit.

4. The device according to claim 1 , wherein:

the instruction decoder is configured to generate a different set of control signals per each type of the bit manipulation instruction;

the types of the bit manipulation instructions comprise a bit set instruction; and

each bitwise logic circuit is configured to selectively set an associated manipulated register bit based on a value of the associated control register bit.

5. The device according to claim 1 , wherein:

at least one input multiplexer of each bitwise logic circuit is configured to receive a mask affected signal that comprises a value that equals a value of the associated mask bit; and

at least one other input multiplexer of each bitwise logic circuit is configured to receive a mask affected signal that comprises a value that equals an inverted value of the associated mask bit.

6. The device according to claim 1 , wherein:

a first input multiplexer and a second input multiplexer of each bitwise logic circuit are configured to:

receive a mask affected signal that comprises a value that equals a value of the associated mask bit; and

receive a constant signal that equals zero; and

a third input multiplexer and a fourth input multiplexer of each bitwise logic circuit are configured to:

receive a mask affected signal that comprises a value that equals an inverted value of the associated mask bit; and

receive a constant signal that equals one.

7. The device according to claim 1 , wherein a respective four input multiplexers of each bitwise logic circuit are configured to:

select a set of signals that equals zero, the associated mask bit, one, and one, if the bit manipulation instruction is a set associated manipulated register bit if associated control bit is set instruction;

select a set of signals that equals the associated mask bit, zero, one, and one, if the bit manipulation instruction is a set associated manipulated register bit if associated control bit is reset instruction;

select a set of signals that equals zero, zero, one, and an inverted value of the associated mask bit, if the bit manipulation instruction is a reset associated manipulated register bit if associated control bit is set instruction; and

select a set of signals that equals zero, zero, the inverted value of the associated mask bit, and one, if the bit manipulation instruction is a reset associated manipulated register bit if associated control bit is reset instruction.

8. The device according to claim 1 , wherein a respective four input multiplexers of each bitwise logic circuit are configured to:

select a set of signals that equals zero, the associated mask bit, one, and an inverted value of the associated mask bit, if the bit manipulation instruction is a toggle associated manipulated register bit if associated control bit is set instruction; and

select a set of signals that equals the associated mask bit, zero, the inverted value of the associated mask bit, and one, if the bit manipulation instruction is a toggle associated manipulated register bit if associated control bit is reset instruction.

9. The device according to claim 1 , wherein the instruction decoder is configured to generate mask bits based on a mask indicator included in the bit manipulation instruction.

10. The device according to claim 1 , further comprising:

a bit selection unit that is coupled to the instruction decoder, to a register array, and to each bitwise logic circuit, wherein:

the instruction decoder is configured to send selection signals to the bit selection unit based on the bit manipulation instruction; and

the bit selection unit is configured to:

send, based on the selection signals, associated manipulated register bits to the bitwise logic circuits; and

send the control register bits to a rotator.

11. The device according to claim 1 , wherein the instruction decoder is further configured to:

receive a bit manipulation instruction that comprises at least one mask identifier, a shift factor identifier, a control register identifier, a manipulated register identifier and a bit manipulation instruction type identifier;

send to each input multiplexer of each bitwise logic circuit the control signal based on the bit manipulation instruction type identifier;

send to a rotator an instruction to rotate a content of a control register based on the shift factor identifier; and

send selection signals to a bit selection unit based on the control register identifier and the manipulated register identifier.

12. A device, comprising:

a fetch unit configured to fetch a bit manipulation instruction, the bit manipulation instruction comprising at least one mask identifier, a shift factor identifier, a control register identifier, a manipulated register identifier, and a bit manipulation instruction type identifier;

an instruction decoder configured to:

receive from the fetch unit the bit manipulation instruction;

send a control signal based on the bit manipulation instruction type identifier to each input multiplexer of a plurality of input multiplexers of each bitwise logic circuit of a plurality of bitwise logic circuits of the device;

send to a rotator an instruction to rotate a content of the control register based on the shift factor identifier; and

send selection signals to a bit selection unit based on the control register identifier and manipulated register identifier; and

an execution unit that comprises the plurality of bitwise logic circuits, the bit selection unit, and the rotator, wherein the execution unit is configured to complete an execution of the bit manipulation instruction based on control signals sent by the instruction decoder.

13. A method for performing bitwise manipulation, the method comprising:

receiving, by an instruction decoder, a bit manipulation instruction;

generating, by the instruction decoder, control signals based on a type of the bit manipulation instruction, wherein the instruction decoder is coupled to multiple bitwise logic circuits;

sending, to each input multiplexer of a plurality of input multiplexers of each bitwise logic circuit of a plurality of bitwise logic circuits, one control signal of the control signals;

wherein each bitwise logic circuits is associated with different control register bits;

selecting, by each input multiplexer, and based on the associated control signal that is received by each input multiplexer, between a constant signal that has a value that is indifferent to the value of a mask, and a mask affected signal that has a value that is responsive to a value of an associated mask bit, to provide a selected signal;

sending, for each bitwise logic circuit, the selected signals from each input multiplexer to an output multiplexer that belongs to the same bitwise logic circuit;

selecting, by each output multiplexer a selected signal to provide an output signal; wherein the selecting is responsive to a value of an associated manipulated register bit and to a value of an associated control register bit; and

outputting an output signal that reflects the selection.

14. The method according to claim 13 further comprising:

rotating, by a rotator that is coupled to the instruction decoder, and by a shift factor indicated by the bit manipulation instruction, a content of a control register; and

providing to each bitwise logic circuit an associated control logic circuit bit.

15. The method according to claim 13 further comprising,

selectively toggling manipulated register bits, by the multiple bitwise logic circuits, based on a value of the associated control register bit if the bit manipulation instruction type is a bit toggle instruction.

16. The method according to claim 13 further comprising:

providing, to at least one input multiplexer of each bitwise logic circuit, a mask affected signal that has a value that equals a value of the associated mask bit; and

providing, to at least one other input multiplexer of each bitwise logic circuit, a mask affected signal that has a value that equals an inverted value of the associated mask bit.

17. The method according to claim 13 further comprising:

providing, to two input multiplexers of each bitwise logic circuit, a mask affected signal that has a value that equals a value of the associated mask bit; and

providing, two to other input multiplexers of each bitwise logic circuit, a mask affected signal that has a value that equals an inverted value of the associated mask bit.

18. The method according to claim 13 further comprising:

selecting a set of signals that equals zero, the associated mask bit, one, and one, if the bit manipulation instruction is a set associated manipulated register bit if associated control bit is set instruction;

selecting a set of signals that equals the associated mask bit, zero, one, and one, if the bit manipulation instruction is a set associated manipulated register bit if associated control bit is reset instruction;

selecting a set of signals that equals zero, zero, one, and an inverted value of the associated mask bit, if the bit manipulation instruction is a reset associated manipulated register bit if associated control bit is set instruction; and

selecting a set of signals that equals zero, zero, the inverted value of the associated mask bit, and one, if the bit manipulation instruction is a reset associated manipulated register bit if associated control bit is reset instruction.

19. The method according to claim 12 further comprising:

selecting a set of signals that equals zero, the associated mask bit, one, and an inverted value of the associated mask bit, if the bit manipulation instruction is a toggle associated manipulated register bit if associated control bit is set instruction;

selecting a set of signals that equals, the associated mask bit, zero, the inverted value of the associated mask bit, and one, if the bit manipulation instruction is a toggle associate manipulated register bit if associated control bit is reset instruction;

selecting a set of signals that equals zero, the associated mask bit, one, and one, if the bit manipulation instruction is a set associated manipulated register bit if associated control bit is set instruction;

selecting a set of signals that equals the associated mask bit, zero, one, and one if the bit manipulation instruction is a set associated manipulated register bit if associated control bit is reset instruction;

selecting a set of signals that equals zero, the associated mask bit, one, and the inverted value of the associated mask bit, if the bit manipulation instruction is a toggle associated manipulated register bit if associated control bit is set instruction; and

selecting a set of signals that equals the associated mask bit, zero, the inverted value of the associated mask bit, and one, if the bit manipulation instruction is a toggle associated manipulated register bit if associated control bit is reset instruction.

20. The method according to claim 13 further comprising:

receiving, by the instruction decoder, a bit manipulation instruction that comprises at least one mask identifier, a shift factor identifier, a control register identifier, a manipulated register identifier and a bit manipulation instruction type identifier;

sending, by the instruction decoder to each input multiplexer of each bitwise logic circuit, the control signal based on the bit manipulation instruction type identifier;

sending, by the instruction decoder to the rotator, an instruction to rotate a content of a control register based on the shift factor identifier; and

sending, by the instruction decoder, selection signals to a bit selection unit based on the control register identifier and manipulated register identifier.

Assignments (31)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0476 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0455 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0521 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Apr 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 030256/0670 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Apr 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030256/0655 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Apr 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030256/0582 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2012
From: GINZBURG, EVGENI; GUY, KEREN; KATZ, ADI
To: FREESCALE SEMICONDUCTOR INC
Reel/Frame 027772/0601 →