Cooperative Patent Classification


CPC Definition - Subclass G06F

Printable version [PDF]
Last Updated Version: 2018.05
ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
Definition statement

This place covers:

Electrical arrangements or processing means for the performance of any automated operation using empirical data in electronic form for classifying, analyzing, monitoring, or carrying out calculations on the data to produce a result or event.

References
Limiting references

This place does not cover:

Computer systems based on specific computational models

Informative references

Attention is drawn to the following places, which may be of interest for search:

Programme-control systems

Digital computers in which all the computation is effected mechanically

Computers in which a part of the computation is effected hydraulically or pneumatically

Computers in which a part of the computation is effected optically

Self-contained input or output peripheral equipment

Computer displays

Impedance networks using digital techniques

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Handling

includes processing or transporting of data.

Data processing equipment

An association of an electric digital data processor classifiable under group G06F 7/00, with one or more arrangements classifiable under groups G06F 1/00- G06F 5/00 and G06F 9/00- G06F 13/00.

Details not covered by groups G06F 3/00G06F 13/00 and G06F 21/00 (architectures of general purpose stored program computers G06F 15/76)
References
Limiting references

This place does not cover:

Security arrangements for protecting computers or computer systems against unauthorised activity

Informative references

Attention is drawn to the following places, which may be of interest for search:

Details of data-processing equipment

Generating or distributing clock signals or signals derived directly therefrom
Definition statement

This place covers:

Generation and/or distribution of clock signal(s) within a computer system.

Distribution of clock signals {, e.g. skew}
Definition statement

This place covers:

Distribution of clock signal(s) within a computer system, in a typical case the goal to be achieved is to minimize the skew.

{in which the distribution is at least partially optical}
Definition statement

This place covers:

Clock distribution wherein the clock signal(s) are distributed entirely optically or partially optically and partially electrically.

Constructional details or arrangements
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Instrument details

Constructional details common to different types of electric apparatus

{Arrangements to protect the display from incident light, e.g. hoods}
Special rules of classification

Used also for hoods protecting displays of portable computers.

{Arrangements to support accessories mechanically attached to the display housing (G06F 1/1603, G06F 1/1605 take precedence)}
Special rules of classification

Used also for accessories attached on displays of portable computers.

{for portable computers (cooling arrangements therefor G06F 1/203; constructional details or arrangements for pocket calculators, electronic agendas or books G06F 15/0216; constructional details of portable telephone sets: with several bodies H04M 1/0202)}
Definition statement

This place covers:

Portable computers in the sense of computers able to be used as stand alone computers with their own integrated user interface and designed to be carried by hand (e.g. hand held computers or laptop computers) or worn on the user's body (wearable computers).

Docking stations and extensions associated with the portable computers which may be mechanically attached to them.

Relationships with other classification places

Telephone sets including user guidance or feature selection means facilitating their use: H04M 1/247

Cordless telephones: H04M 1/725

Pagers: G08B 5/222

References
Limiting references

This place does not cover:

Cooling arrangements for portable computers

Constructional details or arrangements for pocket calculators, electronic agendas or books

Anti-theft locking devices

Constructional details of cameras

Hand held scanners

Casing of remote controls

Constructional details of portable telephone sets: with several bodies

Special rules of classification

In this field, main mechanical aspects of the housing (single housing, foldable or sliding housings) are classified in G06F 1/1615 - G06F 1/1626, while all the other constructional details (enclosure details, display, keyboard, integrated peripherals, etc) are classified in G06F 1/1633 in complement to this main aspect.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • " Laptop"," Palmtop"," PDA"
  • " cell phone"," mobile phone","smart phone"
{with several enclosures having relative motions, each enclosure supporting at least one I/O or computing function (constructional details of portable telephones comprising a plurality of mechanically joined movable body parts H04M 1/0206)}
Definition statement

This place covers:

Portable computers having a plurality of enclosures which can't be classified in anyone of the subgroups, e.g. multiple enclosure with loose mechanical link (single wire, expandable or/and flexible link, rollable part), computer split in several housings with no mechanical connection and wirelessly connected, complex mechanical link with multiple degrees of freedom.

Illustrative examples:

media0.png

media1.png

media2.jpg

References
Limiting references

This place does not cover:

Constructional details of portable telephones comprising a plurality of mechanically joined movable body parts

{with folding flat displays, e.g. laptop computers or notebooks having a clamshell configuration, with body parts pivoting to an open position around an axis parallel to the plane they define in closed position}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Foldable portable telephones

{the display being foldable up to the back of the other housing with a single degree of freedom, e.g. by 360° rotation over the axis defined by the rear edge of the base enclosure}
Definition statement

This place covers:

Also when the hinging part is composed of two parallel rotation axes.

media3.jpg

{changing, e.g. reversing, the face orientation of the screen with a two degrees of freedom mechanism, e.g. for folding into tablet PC like position or orienting towards the direction opposite to the user to show to a second user}
Definition statement

This place covers:

Reversing the orientation done either by rotating along the X or Y axis or by detaching the display and attaching it in the reverse orientation. Illustrative example:

media4.jpg

{with enclosures rotating around an axis perpendicular to the plane they define or with ball-joint coupling, e.g. PDA with display enclosure orientation changeable between portrait and landscape by rotation with respect to a coplanar body enclosure}
Definition statement

This place covers:

Illustrative examples of subject matter classified in this group:

media5.jpg

Additionally rotation around an axis common to the plane they define but perpendicular to their common side, e.g. reversing the relative orientation along an axis common to both planes but not along their sides (which would be then a folding axis).

media6.jpg

References
Limiting references

This place does not cover:

Reversing the face orientation of the screen of a folding flat display

Informative references

Attention is drawn to the following places, which may be of interest for search:

Rotatable portable telephones

{with sliding enclosures, e.g. sliding keyboard or display}
Definition statement

This place covers:

Portable computers linked by a mechanism allowing translation of one housing relatively to the other housing.

media7.jpg

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Slidable portable telephones

{Carrying enclosures containing additional elements, e.g. case for a laptop and a printer}
Definition statement

This place covers:

Also bags allowing the transport of other peripherals together with the portable computer and carrying trolleys for transporting portable computers.

References
Limiting references

This place does not cover:

Bags per se

Stands with or without wheels as supports for apparatus

Informative references

Attention is drawn to the following places, which may be of interest for search:

Holders or carriers for hand articles

{Wearable computers, e.g. on a belt}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Garnments adapted to accomodate electronic equipment

Fastening articles to garnments

{External expansion units, e.g. docking stations}
Definition statement

This place covers:

Expansions which are directly attached to portable computers, including supplementary battery packs external to the housing, port replicators and cradles for PDAs.

References
Limiting references

This place does not cover:

Standard wired or wireless peripherals such as keyboards, printers or displays which are not mechanically linked to a portable computer

Informative references

Attention is drawn to the following places, which may be of interest for search:

Mounting in a car

Locking against unauthorized removal

Battery charging cradles

PCMCIA cards

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "docking station", "cradle" and "port replicator"
{Constructional details or arrangements of portable computers not specific to the type of enclosures covered by groups G06F 1/1615 - G06F 1/1626}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Constructional details or arrangements of portable computers specific to the type of enclosures

Mounting of specific components of portable telephones

{Details related to the integration of battery packs and other power supplies such as fuel cells or integrated AC adapter (details of mounting batteries in general H01M 2/1022)}
References
Limiting references

This place does not cover:

Details of mounting batteries in general

Informative references

Attention is drawn to the following places, which may be of interest for search:

Computer power supply in general

Portable telephones battery compartments

{Details related to the display arrangement, including those related to the mounting of the display in the housing (constructional details related to the housing of computer displays in general G06F 1/1601)}
References
Limiting references

This place does not cover:

Constructional details related to the housing of computer displays in general

Accessories mechanically attached to the display housing portion of portable computers

Informative references

Attention is drawn to the following places, which may be of interest for search:

Portable telephones display

{the display being formed by a plurality of foldable display components (G06F 1/1647 takes precedence)}
References
Limiting references

This place does not cover:

Including at least an additional display

Special rules of classification

Should be used when the displays are used in combination as a virtual single display area where the displayed image is split over the display screens.

{including at least an additional display (G06F 1/1692 takes precedence)}
References
Limiting references

This place does not cover:

Constructional details or arrangements related to integrated I/O peripheral being a secondary touch screen used as control interface, e.g. virtual buttons or sliders

{the additional display being small, e.g. for presenting status information}
Definition statement

This place covers:

Typically very small displays disposed on the back of the main display for indicating time, alerts or battery level or small status displays near the hinge above the keyboard. Illustrative examples:

media8.jpg

media9.jpg

{the display being flexible, e.g. mimicking a sheet of paper, or rollable}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Portable telephones flexible display

{Details related to functional adaptations of the enclosure, e.g. to provide protection against EMI, shock, water, or to host detachable peripherals like a mouse or removable expansions units like PCMCIA cards, or to provide access to internal components for maintenance or to removable storage supports like CDs or DVDs, or to mechanically mount accessories (mounting of accessories to a computer display G06F 1/1607; display hoods G06F 1/1603; cooling arrangements for portable computers G06F 1/203)}
References
Limiting references

This place does not cover:

Accessories mechanically attached to the display housing portion of portable computers

Enclosure details of non portable computers

Cooling arrangements for portable computers

Informative references

Attention is drawn to the following places, which may be of interest for search:

Portable telephones with mechanically detachable module(s)

Portable telephones with improved resistance to shocks

{related to the mounting of internal components, e.g. disc drive or any other functional module}
References
Limiting references

This place does not cover:

Internal mounting structures of non portable computers

{Details related to the integrated keyboard}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Details of stand alone keyboards

Constructional details of keyboard switches

Portable telephones keypads

{Arrangements for projecting a virtual keyboard}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Digitisers

Interaction with virtual keyboards displayed on a touch sensitive surface

{Miscellaneous details related to the relative movement between the different enclosures or enclosure parts which could be adopted independently from the movement typologies specified in G06F 1/1615 and subgroups}
References
Limiting references

This place does not cover:

Movement typologies

Informative references

Attention is drawn to the following places, which may be of interest for search:

Relative motion of the body parts to change the operational status of the portable telephone

{for detecting open or closed state or particular intermediate positions assumed by movable parts of the enclosure, e.g. detection of display lid position with respect to main body in a laptop, detection of opening of the cover of battery compartment}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Portable telephones open/close detection

{Details related solely to hinges (hinge details related to the transmission of signals or power are classified in G06F 1/1683)}
References
Limiting references

This place does not cover:

Hinge details related to the transmission of signals or power

Informative references

Attention is drawn to the following places, which may be of interest for search:

Hinges for doors, windows or wings

Portable telephones hinge details

{for the transmission of signal or power between the different housings, e.g. details of wired or wireless communication, passage of cabling}
Definition statement

This place covers:

Also optical transmission of data or inductive transmission of power between housings.

media10.jpg

{the I/O peripheral being an integrated camera}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Camera details of portable telephones

{the I/O peripheral being integrated loudspeakers}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Mounting aspects of transmitters in portable telephones

Loudspeakers

{the I/O peripheral being an integrated pointing device, e.g. trackball in the palm rest area, mini-joystick integrated between keyboard keys, touch pads or touch stripes (G06F 1/1643 takes precedence; constructional details of pointing devices G06F 3/033; joysticks in general G05G 9/047)}
References
Limiting references

This place does not cover:

Touchscreens

Constructional details of pointing devices

Joysticks in general

Informative references

Attention is drawn to the following places, which may be of interest for search:

Constructional details of pointing devices in portable telephones

{the I/O peripheral being a secondary touch screen used as control interface, e.g. virtual buttons or sliders}
Definition statement

This place covers:

Secondary touchscreens which are used only as input device (touchpad, virtual input devices), and not for information display.

{the I/O peripheral being a single or a set of motion sensors for pointer control or gesture input obtained by sensing movements of the portable computer}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Gestural input

Motion sensing in space for computer input

{the I/O peripheral being a printing or scanning device}
Definition statement

This place covers:

Scanners for e.g. A4 sheets.

References
Limiting references

This place does not cover:

Barcode readers

Informative references

Attention is drawn to the following places, which may be of interest for search:

Scanners

Printers

{the I/O peripheral being a sending/receiving arrangement to establish a cordless communication link, e.g. radio or infrared link, integrated cellular phone (details of antennas disposed inside a computer H01Q 1/2266)}
References
Limiting references

This place does not cover:

details of antennas disposed inside a computer

Interaction of portable devices with video on demand or television systems

Informative references

Attention is drawn to the following places, which may be of interest for search:

Aerials

Cordless telephones

Packaging or power distribution {(for electrical apparatus in general H05K, H02J)}
Definition statement

This place covers:

Cases and housing for computers and how computer components are "packed" , i.e. mounted within the housing . It also covers arrangements, e.g. cabling, to distribute the power generated by the power supply unit to the other computer components mounted within the casing.

References
Limiting references

This place does not cover:

Cases or housings of portable computers

Cases or housings for electrical apparatuses in general

{Enclosures (for electric apparatus in general H05K 5/00; for portable computers G06F 1/1613)}
Definition statement

This place covers:

Enclosures for computers, including constructional details of front or bezel.

References
Limiting references

This place does not cover:

Enclosures for portable computers

Enclosures for electrical apparatuses in general

{with special features, e.g. for use in industrial environments; grounding or shielding against radio frequency interference [RFI] or electromagnetical interference [EMI] (in general H05K 9/00)}
Definition statement

This place covers:

Enclosures for non-standard computers, e.g. industrial computers, computers specfically adapted to special environments.

References
Limiting references

This place does not cover:

Shielding against electromagnetical interference in general

{Internal mounting support structures, e.g. for printed circuit boards (in general H05K 7/1422), internal connecting means (for buses G06F 13/409)}
Definition statement

This place covers:

Mounting structures for securing and/or interconnecting among them internal components within the enclosure of a computer system.

References
Limiting references

This place does not cover:

Internal mounting structures for portable computers

Internal connecting means for buses

Mounting structures for printed circuits in general

{Mounting of expansion boards (in general H05K 7/1417)}
References
Limiting references

This place does not cover:

Mounting of expansion boards in general

Special rules of classification

Used for the securing of expansion cards completely within the enclosure, and not to the connection to openings in the enclosure.

{Securing of expansion boards in correspondence to slots provided at the computer enclosure (in general H05K 7/1402)}
References
Limiting references

This place does not cover:

Securing of expansion boards in general

Special rules of classification

Used for to the connection of expansion boards to openings in the enclosure so that at least a portion, or connector, of the expansion board is accessible from outside the enclosure.

{Mounting of fixed and removable disk drives (constructional details of disk drives housings in general G11B 33/00)}
References
Limiting references

This place does not cover:

Constructional details of disk drives housings in general

Special rules of classification

Used for both optical drives and hard disk drives.

Cooling means
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Modifications to facilitate cooling, ventilating, or heating

{comprising thermal management}
Special rules of classification

This groups refers also to documents wherein the thermal management is achieved by lowering power consumption in order to reduce heat generation..

Documents also disclosing costructional details about the managed cooling arrangement should be also classified in G06F 1/20 if describing the cooling of a desktop computer or G06F 1/203 if describing the cooling of a portable computer.

Resetting means
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Microprogramme loading

Restoration from data faults

Power supply means, e.g. regulation thereof (for memories G11C)
Definition statement

This place covers:

Power supplies for computers including:

  • Power regulation;
  • Power monitoring including means for acting in the event of power supply fluctuations or interruption;
  • Power save.
References
Limiting references

This place does not cover:

Power supplies for memories

Informative references

Attention is drawn to the following places, which may be of interest for search:

Systems for regulating electric or magnetic variables

{Arrangements for using multiple switchable power supplies, e.g. battery and AC (G06F 1/30 takes precedence)}
Definition statement

This place covers:

Arrangements with switchable, multiple power supplies (typical example is AC and battery, but may also include multiple batteries, fuel cells or solar panels).

References
Limiting references

This place does not cover:

Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations

{Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips}
Definition statement

This place covers:

Arrangements to supply power to external peripherals, either directly from the computer or under computer control (typical cases are the supply of power through a USB interface and the power strips).

Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
Definition statement

This place covers:

Arrangements to monitor, and only monitoring, power supply parameters (e.g. voltage and/or current).

References
Limiting references

This place does not cover:

Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations

Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations (for resetting only G06F 1/24)
References
Limiting references

This place does not cover:

For resetting only

Informative references

Attention is drawn to the following places, which may be of interest for search:

Involving the processing of data-words

Means for saving power
Definition statement

This place covers:

Means to save power in computers, including devices, methods and combinations of devices and method features.

{Power Management, i.e. event-based initiation of power-saving mode}
Definition statement

This place covers:

Power saving having a relationship to an event of any type. As opposed to arrangements and/or methods to save power of permanent or continuous nature.

{Monitoring a parameter, a device or an event triggering a change in power modality}
Definition statement

This place covers:

Power saving triggered by a certain event and/or condition detected by monitoring or supervision of e.g. hardware, communication, processing tasks.

{Monitoring of peripheral devices}
Special rules of classification

Used when the peripheral monitored does not belong to any of the subgroups: G06F 1/3218, G06F 1/3221 or G06F 1/3225.

{Monitoring task completion, e.g. by use of idle timer, STOP command, WAIT command}
Definition statement

This place covers:

Power saving initiated when a task completion is detected (typical cases are the completion of processing tasks, e.g. programs, applications, routines).

{Monitoring user presence or absence}
Definition statement

This place covers:

Power saving initiated when the user absence is detected, e.g. through camera and/or sensors.

Special rules of classification

Not to be used when the user absence is inferred by inactivity period (subgroups referring to monitoring of peripheral devices to be used in such cases: G06F 1/3215, etc).

{Power saving by disabling clock generation or distribution}
Definition statement

This place covers:

Power saving by stopping clock generation or distribution to a computer or a component.

{Power saving in microcontroller unit}
Definition statement

This place covers:

Power saving taking place in the processing unit of the computer, intended as central processing unit (CPU), microcontroller unit (MCU), microprocessor.

{Power saving in optical drive}
Definition statement

This place covers:

Power saving in optical (or magneto-optical) disk drives, e.g. CD, DVD, Blue-Ray, etc.

{Power saving in hard disk drive}
References
Limiting references

This place does not cover:

Power saving in storage systems (e.g. not in disk drives within a computer system)

{Power saving by switching off individual functional units in a computer system, i.e. selective power distribution}
Definition statement

This place covers:

Power saving by selectively reducing power consumption of individual components of a computer system. Such reduction can be achieved in different ways, e.g. by lowering the clock frequency or stopping the clock, by lowering the voltage, by stopping the power supply (power gating).

Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements (typewriters B41J; conversion of physical variables F15B 5/00, G01; image acquisition G06T 1/00, G06F 9/00; coding, decoding or code conversion in general H03M; transmission of digital information H04L; {in regulating or control systems G05B})
Definition statement

This place covers:

Input arrangements which are not covered in specific subgroups under it in the hierarchy

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Typewriters

Conversion of physical variables

In regulating or control systems

Image acquisition

Coding, decoding or code conversion in general

Transmission of digital information

{Specific input/output arrangements not covered by G06F 3/02 - G06F 3/16, e.g. facsimile, microfilm (facsimile per se H04N 1/00; viewers photographic printing G03B; electrography, magnetography G03G; other optical apparatus G02B 27/00)}
Definition statement

This place covers:

Includes inter alia arrangements in which a barcode reader is used to input data to a computer and in particular drivers for barcode or QR code readers.

Due to the later creation of G06F 3/01 groups, the title should be understood as I/O arrangements not covered by G06F 3/01 - G06F 3/16, instead of G06F 3/02 - G06F 3/16.

Relationships with other classification places

Recognition of data; presentation of data; record carriers; handling record carriers: G06K.

References
Limiting references

This place does not cover:

Detection of the position or the displacement of a tangible user interface as a computer input

Other optical apparatus

Viewers photographic printing

Electrography, magnetography

Constructional details of barcode readers

Reading of RFID record carriers

Constructional details of RFID record carriers

Use of barcode readers or RFIDs in data processing systems for business applications

Wireless phone using NFC or a two-way short-range wireless interface

Facsimile per se

Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific input/output arrangements

Viewers photographic printing

Electrography, magnetography

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

TUI

a user interface in which a person interacts with digital information through a physical environment, i.e. by manipulating physical objects (e.g. in the same way as moving pieces of a game on a tablet), often using RFID or NFC.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

TUI

Tangible User Interface

RFID

Radio-Frequency Identification

NFC

Near Field Communication

{Input arrangements through a video camera}
Definition statement

This place covers:

Specific arrangements for input through a video camera, not covered by G06F 3/01 - G06F 3/16, e.g. details of the interface linking the camera to the computer.

This group was originally meant for devices adapting analog video cameras to computer entry.

References
Limiting references

This place does not cover:

Tracking user body for computer input

Pointing device integrating a camera for tracking its own position with respect to an imaged reference surface or the surroundings

Tracking a projected light spot generated by a light pen or a "laser pointer" indicating a position on a display surface

Digitisers using a camera for tracking the position of objects with respect to an imaged reference surface

Recognising movements or behaviour, e.g. recognition of gestures, dynamic facial expressions; Lip-reading

Television cameras

{Digital input from or digital output to memories of the shift register type, e.g. magnetic bubble memories, CCD memories (magnetic bubble memories per se G11C 19/08, CCD memories per se G11C 19/28)}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Digital input from or digital output to record carriers

Magnetic bubble memories per se

Shift registers, C-C-D memories per se

Organisation of a multiplicity of shift registers

Special rules of classification

Old technology, not used anymore.

Input arrangements or combined input and output arrangements for interaction between user and computer (G06F 3/16 takes precedence)
Definition statement

This place covers:

Input arrangements, or combined input and output arrangements, for interaction between user and computer.

Particularly, said input arrangements include those based on the interaction with the human body, e.g.

  • gloves for hand or finger tracking;
  • eye or head trackers;
  • devices using bioelectric signals, e.g. detecting nervous activity;
  • arrangements for providing computer generated force feedback in input devices.
References
Limiting references

This place does not cover:

Sound input, sound output including multimode user input, i.e. combining audio input (e.g. voice input) with other user input

Informative references

Attention is drawn to the following places, which may be of interest for search:

Interaction techniques based on graphical user interfaces [GUI]

{Arrangements for interaction with the human body, e.g. for user immersion in virtual reality (for handicapped people in general A61F 4/00; robot control B25J; tactile signalling G08B; blind teaching G09B 21/00; for electrophonic musical instruments G10H 1/344; electronic switches characterised by the way in which the control signals are generated H03K 17/94)}
Relationships with other classification places

Diagnosis; surgery; identification: A61B

Recognition of data; presentation of data; record carriers; handling record carriers: G06K

References
Limiting references

This place does not cover:

Measuring of parameters or motion of the human body or parts thereof for diagnostic purposes

For handicapped people in general

Games using an electronically generated display and player-operated input means

Robot control

Stereoscopic optical systems

Acquiring or recognising human faces, facial parts, facial sketches, facial expressions

Recognising human body or animal bodies

Tactile signalling

Blind teaching

Virtual reality arrangements for interacting with music, including those with tactile feedback

For electrophonic musical instruments

Electronic switches characterised by the way in which the control signals are generated

{Head tracking input arrangements}
Definition statement

This place covers:

For the scope of this group, Head-tracking is interpreted as covering face detection and tracking.

References
Limiting references

This place does not cover:

Head-tracking for image generation in head-mounted display

Use of head-tracking for image generation

3D image generation in augmented reality

Using viewer tracking

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

HMD

Head-Mounted Display

{Eye tracking input arrangements (G06F 3/015 takes precedence)}
References
Limiting references

This place does not cover:

Based on nervous system activity detection

Apparatus for testing the eyes and instruments for examining the eyes

Instruments for determining or recording eye movement

Acquiring or recognising eyes

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "eye tracking" and "gaze tracking"
{Hand-worn input/output arrangements, e.g. data gloves}
Definition statement

This place covers:

Also covers hand-worn keyboards

Relationships with other classification places

Manipulators; chambers provided with manipulation devices: B25J

References
Limiting references

This place does not cover:

Finger worn arrangements for converting the position or the displacement of a member into a coded form

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Data glove (sometimes called a "wired glove" or "cyberglove")

an input device for human–computer interaction worn like a glove

{Input arrangements based on nervous system activity detection, e.g. brain waves [EEG] detection, electromyograms [EMG] detection, electrodermal response detection}
References
Limiting references

This place does not cover:

Detecting bioelectric signals for diagnostic purpose

Bioelectrical control, e.g. myoelectric

{Input arrangements with force or tactile feedback as computer generated output to the user}
Definition statement

This place covers:

Dynamic force or tactile feedback arrangements. Also passive feedback arrangements but only if they are dynamically reconfigurable under computer control, e.g. buttons raised from a touchpad surface using electronic muscle or similar.

Relationships with other classification places
  • Manipulators; chambers provided with manipulation devices: B25J
  • Conjoint control of vehicle sub-units of different type or different function; control systems specially adapted for hybrid vehicles; road vehicle drive control systems for purposes not related to the control of a particular sub-unit: B60W
  • Systems acting by means of fluids; fluid-pressure actuators, e.g. servo-motors: F15B
  • Control or regulating systems in general: G05B
  • Mechanical control devices: G05G
References
Limiting references

This place does not cover:

Passive (and non reconfigurable) feedback arrangements on a touchscreen, e.g. overlays with reliefs for indicating keys of a virtual keyboard

Hand grip control means for manipulators

Tactile feedback for vehicle driver

Servo-motor systems giving the operating person a "feeling" of the response of the actuated device:

Means for enhancing the operator's awareness of arrival of the controlling member (knob, handle) at a command or datum position; Providing feel, e.g. means for creating a counterforce

Tactile presentation of information , e.g. Braille display

Keyboards characterised by tactile feedback features

Piezoelectric actuators

{Gesture based interaction, e.g. based on a set of recognized hand gestures (interaction based on gestures traced on a digitiser G06F 3/04883)}
Definition statement

This place covers:

Gesture interaction as a sequence and/ or a combination of user movements captured using various sensing techniques such as (among others) cameras monitoring the user, arrangements for interaction with the human body, input by means of a device moved freely in 3D space or opto-electronic detection arrangements.

References
Limiting references

This place does not cover:

Gestures made on the surface of a digitiser and/or in close proximity to this surface for digitisers capable of touchless position sensing and/or measuring also the distance in the Z direction

Acquiring or recognising (static) human faces, facial parts, facial sketches, facial expressions

Recognising movements or behaviour, e.g. recognition of gestures, dynamic facial expressions; Lip-reading

Lip-reading assisted speech recognition

Informative references

Attention is drawn to the following places, which may be of interest for search:

Arrangements for interaction with the human body:

Detection arrangements using opto-electronic means

Input by means of (pointing) device or object moved freely in 3D space

Special rules of classification

The sensing technique as such should be also classified in the relevant class if necessary (non trivial technique).

{Input/output arrangements for oriental characters}
Relationships with other classification places

Handling natural language data: G06F 17/20

References
Limiting references

This place does not cover:

Inputting characters

Non-Latin character encoding in text processing, e.g. kana-to-kanji conversion

Processing of non- latin text

Input arrangements using manually operated switches, e.g. using keyboards or dials (keyboard switches per se H01H 13/70; electronic switches characterised by the way in which the control signals are generated H03K 17/94)
Definition statement

This place covers:

Input arrangements using manually operated switches, e.g. using keyboards or dials, insofar as they are stand-alone devices or integrated in a fixed computer system. Includes wired or wireless keyboards which are not mechanically linked to a portable computer.

Relationships with other classification places
  • Electric switches; relays; selectors; emergency protective device: H01H
  • Pulse technique: H03K
References
Limiting references

This place does not cover:

Details related to integrated keyboard of portable computers

Keyboard switches per se

Electronic switches characterised by the way in which the control signals are generated

{Constructional details or processes of manufacture of the input device}
References
Limiting references

This place does not cover:

Special layout of keys

Palm(wrist)-rests not integrated in the keyboard

Wrist worn wrist rests

Document holders for typewriters

Input/Output devices for watches

Details of keys/push buttons

Switches having rectilinearly-movable operating part or parts

Constructional details of keyboards having such switches

Electronic switching or gating i.e. not by contact-making or -braking

Proximity switches

Touch switches with electronic switching

Capacitive touch switches

Force resistance transducer

Optical touch switches

Piezo-electric touch switches

Resistive touch switches

Keyboard, i.e. having a plurality of control members, with electronic switching

With optoelectronic devices

With magnetic movable elements

With capacitive movable elements

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

RSI

Repetitive Stress Injuries

{Lever arrangements for operating keyboard cursor control keys in a joystick-like manner}
References
Limiting references

This place does not cover:

Integration of a mini joystick in a portable computer

Integration of a mini joystick in a keyboard

Details of the interface with a computer

Joysticks with a pivotable rigid stick

{Arrangements for adjusting the tilt angle of a keyboard, e.g. pivoting legs (for keyboards integrated in a laptop computer G06F 1/1667)}
References
Limiting references

This place does not cover:

Adjusting the tilt angle of the integrated keyboard in a mobile computer

{Arrangements integrating additional peripherals in a keyboard, e.g. card or barcode reader, optical scanner}
References
Limiting references

This place does not cover:

Constructional details of barcode readers

{Arrangements providing an integrated pointing device in a keyboard, e.g. trackball, mini-joystick (for pointing devices integrated in a laptop computer G06F 1/169; joysticks G05G 9/047; constructional details of pointing devices G06F 3/033)}
References
Limiting references

This place does not cover:

Integration of a mini joystick in a portable computer

Constructional details of pointing devices

Joysticks with a pivotable rigid stick

{Arrangements for ergonomically adjusting the disposition of keys of a keyboard (for keyboards integrated in a laptop computer G06F 1/1664)}
References
Limiting references

This place does not cover:

For keyboards integrated in a laptop computer

Keyboards characterised by ergonomic functions, e.g. for miniature keyboards

{Special purpose keyboards}
Definition statement

This place covers:

Any keyboard designed or modified to control a specific software application or specific hardware, e.g. by integrating dedicated keys. Key layouts in alternative to the QWERTY standard are also classified in this group.

References
Limiting references

This place does not cover:

Devices for teaching typing

{Arrangements for reducing keyboard size for transport or storage, e.g. foldable keyboards, keyboards with collapsible keys (G06F 3/0216 takes precedence; for keyboards integrated in a laptop computer G06F 1/1666)}
References
Limiting references

This place does not cover:

Arrangements for reducing the size of the integrated keyboard in a portable computer

Arrangements for ergonomically adjusting the disposition of keys of a keyboard

Keyboards characterised by the casing, e.g. sealed casings or casings reducible in size

{Key guide holders}
References
Limiting references

This place does not cover:

Document holders for typewriters

{Cooperation and interconnection of the input arrangement with other functional units of a computer (G06F 3/023 - G06F 3/037 take precedence)}
Definition statement

This place covers:

Input arrangements using manually operated switches, e.g. using keyboards or dials, further comprising cooperation and interconnection of the input arrangement with other functional units of a computer.

References
Limiting references

This place does not cover:

Keyboards integrating additional peripherals

Arrangements for converting discrete items of information into a coded form. Arrangements for converting the position or the displacement of a member into a coded form

Arrangements for converting the position or the displacement of a member into a coded form

Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes {(coding in connection with keyboards or like devices in general H03M 11/00)}
Definition statement

This place covers:

Keyboard interfaces and drivers; peripherals emulating a keyboard (e.g. producing "keystroke input" signals); devices providing additional buttons or foot operated switches and connected between keyboard and PC.

Also comprises KVM switches.

References
Limiting references

This place does not cover:

Virtual keyboards displayed on a touchscreen

Coding in connection with keyboards, i.e. coding of the position of operated keys

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

KVM

a KVM switch allows a user to control one or multiple computer(s) from one or multiple KVM device(s)

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

KVM

Keyboard, Video, Mouse

{Cordless keyboards}
Definition statement

This place covers:

Costructional details related to the wireless link, e.g. position of the IR transmitter/receiver as well as protocol details for the wireless trasmission of keyboard codes.

References
Limiting references

This place does not cover:

Means for saving power, monitoring of peripheral devices

Information transfer between I/O devices and CPU, e.g. on bus

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Cordless keyboards

wireless keyboards; they are also often called according to the technology used: infrared keyboard, radio keyboard, wlan keyboard, bluetooth keyboard

{Manual direct entries, e.g. key to main memory}
Special rules of classification

Old technology, not used anymore.

{Character input methods}
Definition statement

This place covers:

Character input using a reduced number of keys, e.g. with respect to the alphabet, i.e. multivalued keys. Covers character input methods wherein a character is entered by tracing it on a matrix of switches (keys). Covers character input methods where a character is entered as a sequence of strokes on different keys or on a same key.

References
Limiting references

This place does not cover:

Interaction with virtual keyboards displayed on a touchscreen

{using switches operable in different directions}
Definition statement

This place covers:

Keyboards or keypads having keys that can be operated not only vertically but also laterally to actuated separate switches associated to different key codes.

References
Limiting references

This place does not cover:

Character input using (e.g. 2 or 4 or 8) directional cursor keys for selecting characters in cooperation with displayed information

{using chord techniques (G06F 3/0234 takes precedence)}
Definition statement

This place covers:

Chord keyboards even if they are split in two or more parts, i.e. the predominant feature is the fact that chording is required to enter a character.

References
Limiting references

This place does not cover:

Character input using switches operable in different directions

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Chord

only an almost simultaneous depression of several keys

{using selection techniques to select from displayed items}
References
Limiting references

This place does not cover:

Selecting from displayed items by using keys for other purposes than character input

{using prediction or retrieval techniques}
Definition statement

This place covers:

Character input using retrieval techniques from a database or dictionary based on previously inputted characters, e.g. for predicting and proposing word completion alternatives.

Covers inter alia T9, iTap and similar techniques.

References
Limiting references

This place does not cover:

Guess-ahead for partial word input (code gives word) in systems handling natural language data by automatic analysis or parsing (e.g. for stenotyping):

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

T9 (stands for Text on 9 keys)

a predictive text input technology for mobile phones, developed by Tegic Communications

iTap

a predictive text technology for mobile phones, developed by Motorola

{Programmable keyboards (key guide holders G06F 3/0224)}
Definition statement

This place covers:

Any keyboard in which the function assigned to all or some of the keys can be reprogrammed, e.g. changing alphabetical keys according to language, programming dedicated function keys.

References
Limiting references

This place does not cover:

Key guide holders

Virtual keyboards on a touchscreen

Scrambling keyboard with display keys in electronically operated locks:

Scrambling keyboard in electronically banking systems (POS,ATM):

Switches with programmable display:

Telephone set with programmable function keys:

Informative references

Attention is drawn to the following places, which may be of interest for search:

Display on the key tops of musical instruments:

Display on the key tops in general

for insertion of decimal point {(display of decimal point G06F 3/1407; complete desk- top or hand- held calculators G06F 15/02)}
References
Limiting references

This place does not cover:

Display of decimal point

Complete desk- top or hand- held calculators

Special rules of classification

Old technology, not used anymore.

Arrangements for converting the position or the displacement of a member into a coded form
Definition statement

This place covers:

This group is used only for "exotic" input devices corresponding to the wording of the definition and not fitting in any of the subgroups, for example arrangements detecting the position or the displacement of tangible user interfaces comprising RFIDs tags or bar codes interacting with a surface (such as chessboard-like surface) where the position detection technique is not covered by any of the subgroups of G06F 3/03.

Example:

media11.png

References
Limiting references

This place does not cover:

Interaction with a tangible user interface other than detecting its location or displacement

Electronic game devices per se

Coordinate identification of nuclear particle tracks

Telemetry of coordinates

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

A Tangible User Interface (TUI)

a user interface in which a person interacts with digital information through a physical environment, i.e. by manipulating physical objects (e.g. in the same way as moving pieces of a game on a tablet), often using RFID or NFC

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

TUI

Tangible User Interface

RFID

Radio-Frequency IDentification

NFC

Near Field Communication

{Detection arrangements using opto-electronic means (constructional details of pointing devices not related to the detection arrangement using opto-electronic means G06F 3/033 and subgroups; optical digitisers G06F 3/042)}
Definition statement

This place covers:

When there is a doubt whether the subject matter belongs to G06F 3/0304 and below or to G06F 3/042 and below, the rule of thumb is: if the moving part is the sensor then it belongs to G06F 3/0304 and below, if the observed target (e.g. finger) is moving then it belongs to G06F 3/042 and below.

References
Limiting references

This place does not cover:

Constructional details of pointing devices not related to the detection arrangement using opto-electronic means

Systems where the position detection is based on the raster scan of a cathode-ray tube (CRT) with a light pen

Digitisers using opto-electronic means

Measuring arrangements characterised by the use of optical means

Optical encoders

Position fixing using optical waves

Prospecting or detecting by optical means

Static switches using electro-optical elements in general

Optical switches

Optical touch switches

{in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface}
Definition statement

This place covers:

Tracking relative movement in co-operation with a regularly or irregularly patterned surface, e.g. arrangements for detecting relative movement of an optical mouse with respect to a generic surface optically detected as irregularly patterned (table, desk top, ordinary mouse pad) or with respect to a surface (e.g. mouse pad) encoded with an optically detectable regular pattern.

Arrangements for detecting absolute position of a member with respect to a regularly patterned surface, e.g. pen optically detecting position-indicative tags printed on a paper sheet.

Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor {(constructional details of joysticks G05G 9/047; arrangement for interfacing a joystick to a computer G06F 3/038)}
References
Limiting references

This place does not cover:

Details of optical sensing in input devices

Arrangement for interfacing a joystick to a computer

Constructional details of joysticks

Special rules of classification

For finger worn pointing devices covered by this group and its subgroups add the Indexing Code G06F 2203/0331.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

RSI

Repetitive Stress Injury

with detection of limited linear or angular displacement of an operating part of the device from a neutral position, e.g. isotonic or isometric joysticks
References
Limiting references

This place does not cover:

Integration of a mini joystick in a portable computer

Integration of a mini joystick in a keyboard

Sliders, in which the moving part moves in a plane

Details of the interface with a computer

Joysticks with a pivotable rigid stick

Switches with generally flat operating part depressible at different locations

with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
Definition statement

This place covers:

Devices sensing their own position or orientation in a three dimensional space, allowing thereby the user to input up to 6 coordinates (position + orientation) by moving the device. Covers inter alia 3D mice.

Relationships with other classification places

Remote control based on movements G08C.

References
Limiting references

This place does not cover:

3D input gestures

Input devices using opto-electronic sensing

{Light pens for emitting or receiving light}
Definition statement

This place covers:

Pens detecting the presence of light on one point (such as a CRT scanning beam).

Light emitting pens positioned in contact or proximity of the pointed position.

References
Limiting references

This place does not cover:

Pens comprising an optical sensor for 1 or 2 dimensional position detection

Light emitting pointers per se used for marking with a light spot the pointed position from a distance

{Mice or pucks (G06F 3/03541 takes precedence)}
References
Limiting references

This place does not cover:

Mouse/trackball convertible-type devices, in which the same ball is used to track the 2-dimensional relative movement

Special rules of classification

Specific Indexing Codes G06F 2203/0332 - G06F 2203/0337 are associated to this group for some constructional details.

{Pens or stylus}
Definition statement

This place covers:

Pens other than optically sensing pens or light pens (e.g. for use in combination with a digitiser). Constructional details of pens in general irrespectively of the interaction technology.

Relationships with other classification places

Pens used for handwriting recognition: G06K 9/222, G06K 9/24.

References
Limiting references

This place does not cover:

Details of optically sensing pens

Light pens

{Touch pads, in which fingers can move on a surface}
Definition statement

This place covers:

Touch surface for sensing the relative motion of a finger over the surface.

References
Limiting references

This place does not cover:

Digitisers

Special rules of classification

Specific Indexing Codes G06F 2203/0338 and G06F 2203/0339 are associated to this group for some constructional details.

{Trackballs (G06F 3/03541 takes precedence)}
References
Limiting references

This place does not cover:

Mouse/trackball convertible-type devices, in which the same ball is used to track the 2-dimensional relative movement

with detection of 1D translations or rotations of an operating part of the device, e.g. scroll wheels, sliders, knobs, rollers or belts
References
Limiting references

This place does not cover:

User controls for vehicle, e.g. dashboard knobs

Incremental encoders

Sliding switches

Rotary encoding wheels -"thumb-wheel switches"

Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
References
Limiting references

This place does not cover:

Control circuits or drivers for touchscreens or digitisers

Graphical user interfaces (GUI) in general

Pointing device drivers modified to control cursor appearance or behaviour taking into account the presence of displayed objects

{for light pen}
Definition statement

This place covers:

Tracking a projected light spot generated by a light pen or a "laser pointer" indicating a position on a display surface, drivers for light pen systems.

References
Limiting references

This place does not cover:

Light pen using the raster scan of a CRT

Informative references

Attention is drawn to the following places, which may be of interest for search:

Light emitting pointers per se used for marking with a light spot the pointed position from a distance

Light emitting pens positioned in contact or proximity of the pointed position

Accessories therefor, e.g. mouse pads (furniture aspects A47B 21/00)
References
Limiting references

This place does not cover:

Platforms for supporting wrists as table extension

Informative references

Attention is drawn to the following places, which may be of interest for search:

Furniture aspects

Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
Definition statement

This place covers:

Position sensing of movable objects such as fingers or pens in contact with a surface or within a relative small distance to this surface (hovering).

This group has been created with the introduction of IPC 8 (2006); before that date, the subject matter of this group and its subgroups was classified in the class range G06K 11/06 - G06K11/16 (up to IPC 7).

References
Limiting references

This place does not cover:

True 3D computer input devices with a freely movable member

3D input gestures

Informative references

Attention is drawn to the following places, which may be of interest for search:

Touchscreens integrated in a portable computer

Integration of touchpad in a portable computer (laptop, PDA)

Integration of touchpad in a keyboard

Constructional details of touchpads

Special rules of classification

In this area, Indexing Codes G06F 2203/04101 - G06F 2203/04112 dealing with details which may be related to different sensing technologies are used in parallel to the classification scheme.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Surface

either as a physical surface or as a virtual one, such as a virtual interaction plane floating in the air

{Integrated displays and digitisers}
Definition statement

This place covers:

Combination of displays with digitisers by sharing at least one constitutive part such as common lines for LCD control and position sensing or a common substrate.

References
Limiting references

This place does not cover:

Constructional details of LCDs

Special rules of classification

The sensing technology used should be also classified in the other relevant subgroups of G06F 3/041.

The constructional detail of the LCDs in general are classified in G02F 1/13, in particular when they also incorporate an input device G02F 1/133308 is used, but G06F 3/0412 takes precedence for the touch application.

{using force sensing means}
Definition statement

This place covers:

Touch position determined by the analysis of the signals provided by pressure/force sensors.

Relationships with other classification places

Measuring force or stress in general: G01L 1/00.

References
Limiting references

This place does not cover:

Tactile force sensors

Force resistance touch switches

Piezoelectric touch switches

Special rules of classification

Devices using sensors whose sole purpose is measuring the pressure/force exerted on the touch surface without providing the touch position from the signals issued from these sensors should not be classified here but in the group relevant for the position sensing technology together with the Indexing Code G06F 2203/04105.

Detection of pressure applied on the touch surface using additional pressure sensitive elements participating to the position sensing process (for example material having pressure sensitive dielectric or resistive properties) or using intrinsic pressure sensitive properties of the position sensing part (for example change of capacitance due to the relative motion of electrodes) but not determining the position from the pressure value should not be classified here but in the group relevant for the position sensing technology.

{Control and interface arrangements for touch screen}
References
Limiting references

This place does not cover:

Touch interaction with a GUI

Special rules of classification

The group is not complete, see G06F 3/0488.

by opto-electronic means {(pens detecting optically their absolute position with respect to a coded surface G06F 3/0317)}
Relationships with other classification places

Optical scanners: G06K 7/10544.

References
Limiting references

This place does not cover:

Pens detecting optically their absolute position with respect to a coded surface

Systems where the position detection is based on the screen scanning with a light pen

Measuring arrangements characterised by the use of optical means

Optical encoders

Position fixing using optical waves:

Prospecting or detecting by optical means

Static switches using electro-optical elements in general

Optical switches

Optical touch switches

Special rules of classification

When there is a doubt whether the subject matter belongs to G06F 3/0304 and below or to G06F 3/042 and below, the rule of thumb is: if the moving part is the sensor then it belongs to G06F 3/0304 and below, if the observed target (e.g. finger) is moving then it belongs to G06F 3/042 and below. In any case, the subclasses G06F 3/042 and below are used only in the context of interaction with a surface as defined in G06F 3/041 or in close proximity of this surface; they are not used in the context of a true 3D interactive environment.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

FTIR

Frustrated Total Internal Reflection

{by interrupting or reflecting a light beam, e.g. optical touch-screen}
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Beam

a narrow beam emitted in a given direction, not as a bright band of light or as an omnidirectional lightening; in the context of beams propagating from one side towards receivers on the opposite side in a grid like arrangement, the beam may have a triangular (or conical) shape with a slightly broader opening angle in order to be sensed by several receivers on the opposite side but not covering the whole array of receivers.

{using sweeping light beams, e.g. using rotating or vibrating mirror}
References
Limiting references

This place does not cover:

Details of moving scanning beam in optical scanners

using propagating acoustic waves
Definition statement

This place covers:

Also documents where the acoustic wave is produced by knocking or rubbing the movable member (finger or pen) on the touch surface without any other vibration generator.

References
Limiting references

This place does not cover:

Infra/ultrasonic mechanical vibration generators

Manufacture of resonators or networks using SAW

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

SAW

Surface Acoustic Waves

{in which the acoustic waves are either generated by a movable member and propagated within a surface layer or propagated within a surface layer and captured by a movable member}
Definition statement

This place covers:

Position detection using pens able either to emit acoustic waves using a dedicated wave generator (e.g. piezo-electric or mechanical vibrators, ultrasound generators or sparks) or to sense the propagating waves arriving through the surface.

References
Limiting references

This place does not cover:

Documents where the movable member (finger or pen) generates the waves but has no acoustic source

Piezo-electric vibrators

{in which generating transducers and detecting transducers are attached to a single acoustic waves transmission substrate}
Definition statement

This place covers:

Passive movable member (finger or pen) disturbing the propagating waves within the substrate.

by capacitive means
References
Limiting references

This place does not cover:

Means for converting the output of a sensing member to another variable by varying capacitance

Capacitive proximity switches

Capacitive touch switches

using resistive elements, e.g. single continuous surface or two parallel surfaces put in contact
References
Limiting references

This place does not cover:

Resistive potentiometers

Resistive touch switches

by electromagnetic means
References
Limiting references

This place does not cover:

Means for converting the output of a sensing member to another variable by varying inductance

Electromagnetic proximity switche

using sets of wires, e.g. crossed wires
Definition statement

This place covers:

Digitisers having a grid of crossing wires brought into contact when pressure is exerted on the interaction surface. The contact may be a direct contact or through a pressure sensitive switch making a connection between the wires. It includes arrays of switches integrated in a display where a galvanic contact is established between rows and columns when the user presses the display surface.

References
Limiting references

This place does not cover:

Sets of "wires" (e.g. electrodes) for sensing the position but in a more complex configuration using either electromagnetic/electrostatic field (without contact) or resistive measurement

Special rules of classification

When wires or switches are integrated in a display, G06F 3/0412 should also be used.

Notes

1. This group covers subject matter where the focus is placed on the way the user can interact with the displayed data. The mere presence of a standard GUI in the context of the disclosure of a specific software application or a specific device capable of processing data related to its specific function, should be in general classified in the appropriate subclasses related to those software applications or specific devices.

2. In this group, multi-aspect classification is applied, so that subject matter characterised by aspects covered by more than one of its groups, which is considered to represent information of interest for search, should be classified in each of those groups.

Interaction techniques based on graphical user interfaces [GUI]
Definition statement

This place covers:

Interaction techniques for GUIs per se, or their application to a computer (system) in general.

Relationships with other classification places

Control or regulating in general: G05B.

Display control circuits: G09G.

Pictorial communication, e.g. television: H04N.

Application of (standard features of) GUIs to a particular technical field, see the corresponding field.

References
Limiting references

This place does not cover:

Hardware interface between computer and display

User interface programs, e.g. command shells, help systems, UIMS

Input/output arrangements of navigation systems

Program-control in industrial systems

Drawing of charts or graphs

Editing figures and text

Control arrangements or circuits for visual displays

E.g. for display of multiple viewports

Interaction with a remote controller on a TV display

End user interface for interactive television or video on demand

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

GUI

Graphical User Interface

based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
Special rules of classification

In the G06F 3/048 group and its subgroups , multi-aspect classification is applied. If an interaction technique is characterized by the fact that it is designed around a metaphor or interaction object, then it should be classified in G06F 3/0481 or in the related subgroups

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Cursor (also called (mouse) pointer)

an indicator used to show the position on a computer display that will respond to input from a text input or pointing device

{interaction techniques based on cursor appearance or behaviour being affected by the presence of displayed objects, e.g. visual feedback during interaction with elements of a graphical user interface through change in cursor appearance, constraint movement or attraction/repulsion with respect to a displayed object (interaction techniques based on cursor behaviour involving tactile or force feedback G06F 3/016)}
References
Limiting references

This place does not cover:

Interaction techniques based on cursor behaviour involving tactile or force feedback

Interaction techniques for the selction of a displayed object

{Interaction with three-dimensional environments, e.g. control of viewpoint to navigate in the environment}
References
Limiting references

This place does not cover:

Navigational instruments, e.g. visual route guidance using 3D or perspective road maps (including 3D objects and buildings)

Navigation within 3D models or images (Walk- or flight-through a virtual museum, a virtual building, a virtual landscape etc.)

Informative references

Attention is drawn to the following places, which may be of interest for search:

Video games

3D image rendering in general

Perspective computation in 3D image rendering

{using icons (graphical programming languages using iconic symbols G06F 8/34)}
Definition statement

This place covers:

Documents describing icons having a specific ( or unconventional ) design or specific properties.

References
Limiting references

This place does not cover:

Graphical programming languages using iconic symbols

interaction with lists of selectable items, e.g. menus
References
Limiting references

This place does not cover:

Operating a cordless telephone by selecting telephonic functions from a plurality of displayed items, e.g. menus, icons

Menu-type displays in TV receivers

interaction with page-structured environments, e.g. book metaphor
Definition statement

This place covers:

Also documents which relate to tabs.

Interaction techniques of e-books when they are heavily book-inspired.

References
Limiting references

This place does not cover:

Electronic books, also known as e-books

for the control of specific functions or operations, e.g. selecting or manipulating an object or an image, setting a parameter value or selecting a range
Special rules of classification

In the G06F 3/048 group and its subgroups , multi-aspect classification is applied. If an interaction technique is characterized by the fact that it is designed to control a specific function or operation, then it should be classified in G06F 3/0484 or in the related subgroups

{Selection of a displayed object (G06F 3/0482 takes precedence)}
Definition statement

This place covers:

GUI interaction techniques specifically designed for selecting a displayed object , e.g. window, icon

Special rules of classification

This class is actually for selection by a pointing device (in the sense of G06F 3/03 and subgroups) such as mouse, a joystick, a digitiser, etc...

There are some older documents relating to selection by keyboard classified here. However, all new documents related to the latter are now classified in G06F 3/0489.

Every time a set of displayed of objects can be consider as structured as a "list of selectable items", the interaction technique for selecting an item should be classified in G06F 3/0482.

{for image manipulation, e.g. dragging, rotation}
Definition statement

This place covers:

Covers image manipulation, e.g. dragging or rotation of the whole image, resizing of objects, changing their colour etc.

References
Limiting references

This place does not cover:

Image data processing or generation, in general

Editing figures and text; combining figures or text

Scrolling or panning
Definition statement

This place covers:

Also documents dealing with panning control.

References
Limiting references

This place does not cover:

Interaction with scrollbars

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Scrolling

"dragging" in some applications, i.e. depicting a user gesture which is not causing a motion of a previously selected object, but rather a motion of a reference within a given context. Such scrolling interactions are covered by this group

Drag-and-drop
Definition statement

This place covers:

Drag and drop operations comprise moving by the user a previously selected object, and finally releasing said object.

References
Limiting references

This place does not cover:

Interaction techniques to control scrolling

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Dragging

"scrolling", i.e. depicting a user gesture which is not causing a motion of a previously selected object, but rather a motion of a reference within a given context. Such scrolling interactions are not covered by this group

using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
Special rules of classification

In the G06F 3/048 group and its subgroups , multi-aspect classification is applied. If an interaction technique is characterized by the fact that it is designed to take into account spefic properties of the input device, then it should be classified in G06F 3/0487 or in the related subgroups

using a touch-screen or digitiser, e.g. input of commands through traced gestures
Relationships with other classification places

Details of input/output arrangements of navigation systems including use of a touch screen and gestures: G01C 21/3664.

References
Limiting references

This place does not cover:

Constructional details of digitisers

{for entering handwritten data, e.g. gestures, text}
References
Limiting references

This place does not cover:

3D input gestures

Signature recognition

Digital ink recognition

Handwriting per se

{by partitioning the screen or tablet into independently controllable areas, e.g. virtual keyboards, menus (G06F 3/04883 takes precedence)}
Definition statement

This place covers:

Covers virtual keyboards displayed on a touchscreen or as a template on a tablet.

References
Limiting references

This place does not cover:

Arrangements for projecting a virtual keyboard in a portable computers

Programmable (hardware) keyboards

Entering handwritten data, e.g. gestures, text

Informative references

Attention is drawn to the following places, which may be of interest for search:

Character input methods like chording, prediction or disambiguation used on a keyboard:

Guess-ahead for partial word input (code gives word) in systems handling natural language data by automatic analysis or parsing (e.g. for stenotyping)

using dedicated keyboard keys or combinations thereof
Relationships with other classification places

Coin‑freed or like apparatus: G07F.

Arrangements or circuits for control of visual displays: G09G.

References
Limiting references

This place does not cover:

Selecting from displayed items by using keys for character input

Automatic teller machines (ATM)

Adjusting display parameters

Digital input using the sampling of an analogue quantity at regular intervals of time {, input from a/d converter or output to d/a converter}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Sample-and-hold arrangements

Sampling per se

Digital input from or digital output to record carriers, {e.g. RAID, emulated record carriers, networked record carriers (recording or reproducing devices per se G11B; error detection, error correction, monitoring per se regarding storage systems G06F 11/00; accessing or addressing within memory systems or architectures G06F 12/00; information retrieval G06F 17/30)}
Definition statement

This place covers:

This head-group of the G06F 3/06 range mostly contains very old storage technologies like magnetic drums, punched tapes, storage on a wire etc.

Special rules of classification

Normally, no new documents should be added to this group. New documents should be classified in the branches under G06F 3/0601 (see the section Special rules of classification under G06F 3/0601 for further indication on classification practice).

{Dedicated interfaces to storage systems}
Definition statement

This place covers:

Physical and/or logical interfaces between a host or a plurality of hosts and a storage device or a plurality of storage devices or storage system related to data/command path and data placement techniques.

Storage devices include devices with rotating magnetic and optical storage media as well as solid state devices, or non-volatile electronic storage elements.

Also covered are interfaces to an emulated rotating storage device in (flash) memory.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Error detection, error correction, monitoring per se

Accessing, addressing or allocation within memory systems

Interconnection of, or transfer of information between memories, I/O devices, CPUs

File systems; file servers

Recording or reproducing devices per se

Communication control characterised by a protocol

Special rules of classification

This group contains older documents (published before the year 2000) from which the majority are not reorganised in the G06F 3/0601 plus range.

No new/recent documents should be classified in G06F 3/0601. Each new document should receive regarding "invention information":

1. at least one class in the range G06F 3/0602 - G06F 3/0626 for the technical effect achieved and

2. at least one class in the range G06F 3/0629 - G06F3/0067 for the technique used and

3. at least one class in the range G06F 3/067 - G03F3/0689 for the infrastructure involved.

The classification of "additional information" is optional. CPC symbols in the range G06F 2206/10 - G06F 2206/1014 should be used for classifying "additional information".

The older documents should be retrieved using CPC break-out codes:

Important: these codes are only for document retrieval purposes and should never be assigned to new documents.

The "additional information" for the older documents can be found by combining the above CPC code(s) with the code G06F 3/0601

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Storage system: an integrated collection of (a.) storage controllers and/or host bus adapters, (b.) storage devices such as disks, CD-ROMs, tapes, media loaders and robots, and (c.) any required control software, that provides storage services to one or more computers.

Synonyms and Keywords

host: computer, PC , PDA , smartphone, (micro)processor, CPU, terminal, client

{specifically adapted to achieve a particular effect}
Definition statement

This place covers:

This group is the hierarchical head group for the range G06F 3/0604 - G06F 3/0626 related to particular storage effects and is not used for classification.

{Improving or facilitating administration, e.g. storage management}
Definition statement

This place covers:

All general aspects of storage administration which do not fit in the subgroups G06F 3/0605 and G06F 3/0607

{by facilitating the interaction with a user or administrator}
Definition statement

This place covers:

Facilitating administration like automating recurrent tasks, selecting and presenting management information to the system user or administrator.

{by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
Definition statement

This place covers:

Facilitating administration in relation to modification of existing systems, improving compatibility and scalability.

{Saving storage space on storage systems}
Definition statement

This place covers:

Effects leading to the reduction of the volume of data stored and the storage space requirements e.g. storage efficiency: the ratio of storage system's effective capacity to its raw capacity.

Relationships with other classification places

This group is often combined with the technique G06F 3/0641: data deduplication

{Improving I/O performance}
Definition statement

This place covers:

All aspects of improving the I/O performance of a storage system that do not fit in the subgroups G06F 3/0611 - G06F 3/0613.

{in relation to response time}
Definition statement

This place covers:

Reducing I/O operation latency time: the time between the making of an I/O request and the completion of the request's execution.

{in relation to throughput}
Definition statement

This place covers:

Increasing I/O operation throughput: the number of I/O requests satisfied in a given time e.g. expressed in I/O requests/second (IOPS)

{Improving the reliability of storage systems}
Definition statement

This place covers:

All reliability aspects which do not fit in the subgroups G06F 3/0616- G06F 3/0619. Only reliability effects with a technique specific for G06F 3/06 should be classified in this subgroup range.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Error detection or correction by redundancy in operation

Redundancy in hardware using active fault-masking

{in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]}
Definition statement

This place covers:

Increasing the life expectancy measured in e.g. Mean Time Between Failures (MTBF)

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

User address space allocation in block erasable memory:

Auxiliary circuits for EPROMs:

Special rules of classification

The subject covered by this group is often described in relation to non-volatile semiconductor memory (arrays), which are, as peculiar storage infrastructure, also classified in G06F 3/0679 or G06F 3/0688

{in relation to availability}
Definition statement

This place covers:

Increasing availability: the amount of time the system is available during those time periods it is expected to be available, measured in e.g. hours of downtime in a year

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Redundancy in operation:

Redundancy in hardware using active fault-masking:

{in relation to data integrity, e.g. data losses, bit errors}
Definition statement

This place covers:

Avoiding data to be altered or lost in operation or by accident.

References
Limiting references

This place does not cover:

Adding special bits or symbols to the coded information in memories:

Backing up (Point in time copy), restoring or mirroring files or drives:

Redundancy in hardware by mirroring:

Error detection or correction in digital recording or reproducing:

{Securing storage systems}
Definition statement

This place covers:

All security aspects which do not fit in the subgroups G06F 3/0622 - G06F 3/0625

References
Limiting references

This place does not cover:

Protecting data against unauthorised access or modification:

G06F21/00N9

Protecting computer components used for data storage:

Arrangements for network security:

{in relation to access}
Definition statement

This place covers:

Securing storage systems by preventing unauthorised access to the storage system, e.g. with a password.

References
Limiting references

This place does not cover:

Protecting data against unauthorised access or modification

Protecting computer components used for data storage

Arrangements for network security

{in relation to content}
Definition statement

This place covers:

Securing storage systems by protecting the data content, e.g. by scrambing the content.

References
Limiting references

This place does not cover:

Protecting data against unauthorised access or modification

Protecting computer components used for data storage

Arrangements for network security

{Power saving in storage systems}
Definition statement

This place covers:

Reducing the power consumption of a storage system: power efficiency

Power saving in storage systems with a plurality of storage devices external to the computer should be classified here.

References
Limiting references

This place does not cover:

Power saving in a single storage device inside a computer

G06F1/32P6

Informative references

Attention is drawn to the following places, which may be of interest for search:

Power management of disk drive devices:

G06F1/32P6H

Driving, starting, stopping record carriers:

Special rules of classification

This group is usually combined with the technique G06F 3/0634 (configuration or reconfiguration of storage systems by changing the state or mode of one or more devices) in order to characterise the technique for the "invention information".

This group is usually combined with the infrastructure G06F 3/0689 (disk arrays) or G06F 3/067 (distributed storage)

{Reducing size or complexity of storage systems}
Definition statement

This place covers:

Reducing the physical size, simplifying the physical integration of storage systems

Relationships with other classification places

This group is often combined with G06F 3/0658 (controller construction) in order to characterise the technique for the "invention information" , e.g. System On Chip (SOC) controller

{making use of a particular technique}
Definition statement

This place covers:

This group is the hierarchical head group for the range G06F 3/0629 - G06F 3/0667 related to particular storage techniques and is not used for classification.

{Configuration or reconfiguration of storage systems}
Definition statement

This place covers:

All configuration or reconfiguration aspects which do not fit in the subgroups.

The general management of storage system features and behaviours through the control of changes made to hardware, software, firmware and related resources throughout the life cycle of the storage system.

{by allocating resources to storage systems}
Definition statement

This place covers:

Allocating physical and/or logical storage resources, including storage elements, storage devices, appliances, virtual devices, disk volume and file resources.

Mapping aspects: conversion between two address spaces, such as the conversion between physical disk block addresses and logical disk block addresses of the virtual disks presented to operating environments by control software i.e. by using a mapping table which contains the correspondence between the two address spaces being mapped to each other.

Partitioning of storage system i.e. the creation of partitions.

References
Limiting references

This place does not cover:

Management of already existing partitions

Allocation of resources in multiprogramming arrangements

Informative references

Attention is drawn to the following places, which may be of interest for search:

Addressing or allocation

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Partitioning : presentation of the usable storage capacity of a disk or array to an operating environment in the form of several virtual disks whose aggregate capacity approximates that of the underlying physical or virtual disk.

Partitioning is common in MS-DOS, Windows, and UNIX environments.

Partitioning is useful with hosts that cannot support the full capacity of a large disk or array as one device. It can also be useful administratively, for example, to create hard subdivisions of a large virtual disk.

{by initialisation or re-initialisation of storage systems}
Definition statement

This place covers:

1. The startup and initial configuration of a storage device, system, piece of software or network.

2. The process of installing or removing hardware or software components required for a system or subsystem to function.

3. Assignment of the operating parameters of a system, subsystem or device, such as designating a disk array's member disks or extents and parameters such as stripe depth, RAID model, cache allowance, etc.

4. The collection of a system's hardware and software components and operating parameters.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Program loading or initiating

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Discovery of storage devices Array configuration

1. Assignment of the disks and operating parameters for a disk array by setting parameters such as stripe depth, RAID model, cache allowance, spare disk assignments, etc.

2. the arrangement of disks and operating parameters that results from such an assignment.

{by changing the state or mode of one or more devices}
Definition statement

This place covers:

Changing the operating state or mode or parameters of one or more storage devices e.g. changing the rotational speed (measured in RPM) or powering on/off or spinning up/down one or more storage devices.

Special rules of classification

This group is often assigned when there is a power saving effect mentioned see G06F 3/0625

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Massive Array of Idle Disks (MAID) : a storage system comprising an array of disk drives that are powered down individually or in groups when not required. MAID storage systems reduce the power consumed by a storage array, at the cost of increased Mean Time To Data.

Synonyms and Keywords

MAID

{by changing the path, e.g. traffic rerouting, path reconfiguration}
Definition statement

This place covers:

Changing the configuration of a storage system by changing the interconnections in between storage system components or changing the routes over which the data flows from the host to the storage device and vice versa e.g. storage switches, storage ports, routing aspects in storage systems.

Relationships with other classification places

This group is usually combined with G06F 3/0607: improving administration by facilitating the process of upgrading existing storage systems.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Arrangements and networking functions for distributed storage in a network

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Access path: the combination of adapters, addresses and routes through a switching fabric used by a computer to communicate with a storage device.

{Permissions}
Definition statement

This place covers:

Techniques related to the right of a user or host or group of users or group of hosts to access specific parts of a storage system, e.g. zoning, locking , shared access

References
Limiting references

This place does not cover:

Protecting computer components used for data storage:

G06F21/00N1D

Access control in arrangements for network security e.g. Access Control Lists (ACL):

H04L 29/06823 ( H04L29/63)

Special rules of classification

This group is usually combined with the effect G06F 3/0622:securing storage system in relation to access

{Organizing or formatting or addressing of data}
Definition statement

This place covers:

All general aspects of data organising or formatting or addressing that does not fit in the subgroups e.g. compression of data in general in a storage interface.

References
Limiting references

This place does not cover:

Conversion of data formats

Image compression

Audio compression

Time compression or expansion in a recording device

Compression per se

Data compression in computer networks

Video compression

{Management of blocks}
Definition statement

This place covers:

Techniques related to the management of blocks in storage systems

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Block: the unit in which data is stored and retrieved on disk and tape devices; the atomic unit of data recognition (through a preamble and block header) and protection (through a CRC or ECC).

Block addressing: an algorithm for uniquely identifying blocks of data stored on disk or tape media by number, and then translating these numbers into physical locations on the media.

{De-duplication techniques}
Definition statement

This place covers:

Techniques related to data deduplication: the replacement of multiple copies of data - at variable levels of granularity - with references to a shared copy in order to save storage space and/or bandwidth.

References
Limiting references

This place does not cover:

Using de-duplication of the data stored as backup

File systems; File servers

Compression per se

Special rules of classification

This group is usually combined with G06F 3/0608: saving storage space

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Data deduplication: the replacement of multiple copies of data—at variable levels of granularity—with references to a shared copy in order to save storage space and/or bandwidth.

{Management of files}
Definition statement

This place covers:

Techniques related to the management of files in storage systems, e.g. low level file system aspects like File Allocation Tables (FAT)

References
Limiting references

This place does not cover:

User address space allocation

File systems; file servers per se

Processing unordered random access data using directory or table look-up

G06F17/30P1D

Table of contents on record carriers (VTOC)

{Management of space entities, e.g. partitions, extents, pools}
Definition statement

This place covers:

Techniques related to the management of space entities in storage systems, e.g. management of partitions, extents, pools

References
Limiting references

This place does not cover:

Creation of space entities (allocating resources to storage systems)

Informative references

Attention is drawn to the following places, which may be of interest for search:

User address space allocation

File systems; File servers

Table of contents on record carriers (VTOC)

Arrangements and networking functions for distributed storage of data in a network

{Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems}
Definition statement

This place covers:

All general aspects of horizontal moving of data between storage devices or systems which do not fit in the sub-groups.

{Migration mechanisms}
Definition statement

This place covers:

Movement of data or information between information systems, formats, or media. Migration is performed for reasons such as possible decay of storage media, obsolete hardware or software (including obsolete data formats), changing performance requirements (see tiered storage), the need for cost efficiencies etc.

References
Limiting references

This place does not cover:

Automatically moving less frequently accessed objects to lower levels in the hierarchy (Lifecycle management)

Special rules of classification

HSM and Tiered storage aspect are usually combined with G06F3/06A6I4H (hierarchical storage) in order to characterise the infrastructure.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Tiered storage : storage that is physically partitioned into multiple distinct classes based on price, performance or other attributes. Data may be dynamically moved among classes in a tiered storage implementation based on access activity or other considerations.

Hierarchical Storage Management (HSM) : The automated migration of data objects among storage devices, usually based on inactivity. Hierarchical storage management is based on the concept of a cost-performance storage hierarchy. By accepting lower access performance (higher access times), one can store objects less expensively.

{Lifecycle management}
Definition statement

This place covers:

Data Lifecycle Management (DLM) the policies, processes, practices, services and tools used to align the business value of data with the most appropriate and cost-effective storage infrastructure from the time data is created through its final disposition. Data is aligned with business requirements through management policies and service levels associated with performance, availability, recoverability, cost, etc. DLM is a subset of Information Lifecycle Management (ILM).

By automatically moving less frequently accessed objects to lower levels in the hierarchy, higher cost storage is freed for more active objects, and a better overall cost to performance ratio is achieved

References
Limiting references

This place does not cover:

Details of archiving in file system administration

Details of hierarchical storage management (HSM) systems

Informative references

Attention is drawn to the following places, which may be of interest for search:

File systems; File servers

Synonyms and Keywords

Retention policy, retention time

{Replication mechanisms}
Definition statement

This place covers:

Replication is the technique of sharing information so as to ensure consistency between redundant resources, such as software or hardware components, to improve reliability, fault-tolerance, or accessibility.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Redundancy in hardware by mirroring: G06F 11/2056 Backing up (Point in time copy), restoring or mirroring files or drives: G06F 11/1402

Backing up (Point in time copy), restoring or mirroring files or drives

Redundancy in hardware by mirroring

Special rules of classification

This group is usually combined with G06F 3/0614 (improving the reliability of storage systems) and subrange in order to characterise the effect achieved by the replication mechanism.

Synonyms and Keywords

Remote copy, mirroring, snapshot

{Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
Definition statement

This place covers:

Erasing of data in a storage systems including secure erasure.

References
Limiting references

This place does not cover:

Secure erasure including encryption techniques

Informative references

Attention is drawn to the following places, which may be of interest for search:

File systems; File servers

Delete operations in file systems

Cleaning, erase control related to flash memory management

Clearing memory, e.g. to prevent the data from being stolen

Special rules of classification

This group is often combined with G06F 3/0623 (securing storage systems in relation to content) in order to characterise the effect achieved by the invention

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Data shredding: the technique of deleting data that is intended to make the data unrecoverable. One such process consists of repeated overwrites of data on disk. Data shredding is not generally held to make data completely unrecoverable in the face of modern forensic techniques—that requires shredding of the disks themselves

{Monitoring storage devices or systems}
Definition statement

This place covers:

Monitoring aspects related to storage interfaces: extra functionality for observing properties of a running storage device or storage system in its normal operating conditions without inputting test data.

References
Limiting references

This place does not cover:

Thermal management in cooling means

Power management

Monitoring for error detection

Verification or detection of system hardware configuration:

Monitoring per se of computing systems

Intrusion detection

Monitoring of control systems

Monitoring, i.e. supervising the progress of recording or reproducing

Monitoring network traffic for security

Network monitoring

Monitoring testing in wireless networks

{Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
Definition statement

This place covers:

All general aspects of vertical moving of data between one or more host and one or more storage devices or systems which do not fit in the sub-groups G06F 3/0656 - G06F 3/0661, i.e general I/O transfer

{Data buffering arrangements}
Definition statement

This place covers:

Arrangements using one or more buffers whereby a buffer is a memory device or programming construct, used to hold data momentarily as it moves along an I/O path or between software components.

Typically, a solid state memory device is used as a buffer. However, any storage device with faster access properties in relation to the storage device it is buffering can be used, e.g. a disk drive can act as a buffer for a tape device.

References
Limiting references

This place does not cover:

Changing the speed of data flow, e.g. FIFO buffers per se

Partitioned buffers

Caches for peripheral storage systems, e.g. disk caches

Detection or prevention of read or write errors by using a data buffer

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Buffer: A region of a physical memory storage used to temporarily hold data while it is being moved from one place to another. It often adjusts timing by implementing a queue algorithm in memory, simultaneously writing data into the queue at one rate and reading it at another rate.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "FIFO" and "queue"
{Controller construction arrangements}
Definition statement

This place covers:

Constructional details of the storage interface not elsewhere provided for.

Physical connecting arrangements not elsewhere provided for.

Hardware arrangements of storage interface components like processors, bridges, offload engines, state machines

References
Limiting references

This place does not cover:

Disposition of constructional parts in recording /reproducing devices

Electrical connectors

Informative references

Attention is drawn to the following places, which may be of interest for search:

Information transfer on a bus, bus structures

{Command handling arrangements, e.g. command buffers, queues, command scheduling}
Definition statement

This place covers:

Techniques related to command decoding and execution and command transformation and routing including command buffering, command queuing, command scheduling

References
Limiting references

This place does not cover:

Data buffering

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

I/O scheduling: term used to describe the method computer operating systems decide the order in which block I/O operations will be submitted to storage volumes.

Synonyms and Keywords

I/O scheduling, disk scheduling

{Format or protocol conversion arrangements}
Definition statement

This place covers:

Techniques related to the conversion of recording formats, e.g. conversion from Count Key Data (CKD) format from a mainframe to Fixed Block Architecture (FBA) format of an open systems computer.

Techniques related to the conversion of storage protocols; bridging hardware e.g. conversion from Small Computer System Interface (SCSI) protocol to an Advanced Technology Attachment (ATA) protocol.

Reference document: US2010251009

References
Limiting references

This place does not cover:

Information transfer using universal interface adapter:

Coupling between buses in general using bus bridges

{Virtualisation aspects}
Definition statement

This place covers:

All virtualisation aspects which do not fit in the subgroups.

Storage virtualisation refers to:

1. The act of abstracting, hiding, or isolating the internal functions of a storage (sub)system or service from applications, host computers, or general network resources, for the purpose of enabling application and network-independent management of storage or data.

2. The application of virtualization to storage services or devices for the purpose of aggregating functions or devices, hiding complexity, or adding new capabilities to lower level storage resources.

{at device level, e.g. emulation of a storage device or system}
Definition statement

This place covers:

A device presented to an operating environment by control software or by a volume manager. From an application standpoint, a virtual device is equivalent to a physical one. In some implementations, virtual devices may differ from physical ones at the operating system level, e.g., booting from a host based disk array may not be possible.

Storage device emulation, e.g. disk emulation

Storage (sub)system emulation, e. g. Virtual Tape System

Also: port virtualisation on a storage network switch, storage interface virtualisation.

References
Limiting references

This place does not cover:

Program control for peripheral devices where the program performs an input/output emulation function

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Virtual disk: a set of disk blocks presented to an operating environment as a range of consecutively numbered logical blocks with disk-like storage and I/O semantics.

Virtual tape: a virtual device with the characteristics of a tape.

{at area level, e.g. provisioning of virtual or logical volumes}
Definition statement

This place covers:

Storage area virtualisation: the act of applying virtualisation to one or more area based (storage) services for the purpose of providing a new aggregated, higher level—e.g., richer, simpler, more secure—storage area service to clients.

Thin provisioning Dynamic allocation of logical volumes.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Thin provisioning (also: dynamic provisioning): a technology that allocates the physical capacity of a volume or file system as applications write data, rather than preallocating all the physical capacity at the time of provisioning.

{at data level, e.g. file, record or object virtualisation}
Definition statement

This place covers:

Object virtualization:

1. the use of virtualisation to present several underlying objects as one single composite object.

2. the use of virtualisation to present an integrated object interface when object data and metadata are managed separately in the storage system

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

File systems; File servers:

File systems; File servers: G06F 17/30067

{adopting a particular infrastructure}
Definition statement

This place covers:

This group is not used for classification.

Special rules of classification

In this subrange, the physical storage infrastructure should be classified and not the virtualised infrastructure if present. If the virtualised storage infrastructure is important, this should be classified in G06F 3/0664.

{Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
Definition statement

This place covers:

Architecture comprising multiple storage systems interconnected by a network allowing access from multiple hosts with emphasis on storage related aspects.

References
Limiting references

This place does not cover:

Distributed file systems implemented using NAS architecture

Network related aspects of SANs, NASes

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Depicted below, an exemplary connection of storage device to a host through a network

media12.jpg

{In-line storage system}
Definition statement

This place covers:

Architecture with a direct host to storage system connection attachment.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Depicted below, an exemplary connection of storage device(s) to a host through a direct connection

media13.jpg

{Single storage device}
Definition statement

This place covers:

The storage system comprising a single controller controlling one or more storage media, e.g. disks.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Depicted below, an exemplary architecture for a single storage device

media14.jpg

{Disk device}
Definition statement

This place covers:

The storage device being a spinning disk drive: a non-volatile, randomly addressable, data storage device.

{Magnetic disk device}
Definition statement

This place covers:

The storage device being a magnetic disk drive e.g. HDD, DASD .

{Optical disk device, e.g. CD-ROM, DVD}
Definition statement

This place covers:

An optical disk drive e.g. CDROM, DVD, WORM optical disk.

{Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
Definition statement

This place covers:

A semiconductor storage device e.g. SSD (solid state drive) , flash memory, one time programmable memory (OTP).

media15.jpg

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Low level flash management such as logical to physical address mapping, erase management and wear levelling:

Auxiliary circuits for EPROMs:

{Hybrid storage device}
Definition statement

This place covers:

Storage device comprising a controller and multiple storage medium types e.g. magnetic and semiconductor mediums sharing the same controller.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

media16.jpg

{Tape device}
Definition statement

This place covers:

Being a tape device .

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Digital recording/reproducing, formatting on tapes

{Plurality of storage devices}
Definition statement

This place covers:

The storage system comprising multiple controllers and a plurality of storage devices .

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

media17.jpg

{Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
Definition statement

This place covers:

The storage system comprising multiple controllers and multiple storage medium types e.g. SSD, HDD and tapes combined; FC-HDD, SATA-HDD, SCSI-HDD combined

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

User address space allocation in block erasable memory

Auxiliary circuits for EPROMs

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

media18.jpg

{Libraries, e.g. tape libraries, jukebox}
Definition statement

This place covers:

A storage system providing automatic access to multiple media cartridges typically via an automatic loading robot e.g. tape library, media changer, juke box.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Control of automated cassette changing arrangements

Control systems for magazines of disc records

{Non-volatile semiconductor memory arrays}
Definition statement

This place covers:

A storage system comprising multiple controllers and multiple semiconductor storage devices.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

media19.jpg

{Disk arrays, e.g. RAID, JBOD}
Definition statement

This place covers:

A storage system comprising multiple controllers and multiple spinning disk drives e.g. RAID, JBOD.

References
Limiting references

This place does not cover:

Error Correction Coding (ECC) for RAID

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

RAID: Redundant Array of Independent Disks (originally: of Inexpensive disks)

JBOD: Just a Bunch Of Drives

from or to individual record carriers, e.g. punched card {, memory card, integrated circuit [IC] card, smart card (record carriers for use with machines and with at least a part designed to carry digital markings G06K 19/00; coded identity card or credit card with a coded signal G07F 7/10)}
Definition statement

This place covers:

Interfaces between a host or a plurality of hosts and a memory card reader or a plurality of memory card readers in relation to the data/command path and data placement techniques.

References
Limiting references

This place does not cover:

Information transfer using universal interface adapter

Methods or arrangements for sensing record carriers

Record carriers with integrated circuit chips

Active credit-cards provided with means to personalise their use

Informative references

Attention is drawn to the following places, which may be of interest for search:

memory card, integrated circuit (IC) card, smart card, record carriers for use with machines and with at least a part designed to carry digital markings

coded identity card or credit card with a coded signal

Synonyms and Keywords

Memory card, Integrated Circuit (IC) card, Smart card, Intelligent card, Active card

Digital output to typewriters
Definition statement

This place covers:

Old technology related to interfaces with typewriters.

Special rules of classification

Not used for classification of new documents.

Digital output to print unit {, e.g. line printer, chain printer}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Digital output to typewriter

Arrangements for producing a permanent visual presentation of the output data using printers

{Dedicated interfaces to print systems}
Definition statement

This place covers:

Interfaces between a host or a plurality of hosts and a printer device or a plurality of printer devices. Techniques for preparing the print job, sending it to a printer and printing it.

References
Limiting references

This place does not cover:

Digital output to typewriter

Controlling a printer in view of its graphical performance

Printing of alphanumeric characters

Special arrangements for scanning and reproduction of pictures, e.g. photographs, facsimile

Special rules of classification

This group contains older documents (published before the year 2000) from which the majority are not reorganised in the G06F 3/1201 and its subgroups. No new/recent documents should be classified in G06F 3/1201.

Each new document should receive regarding "invention information":

  • at least one class in the sub-groups of G06F 3/1202 for the technical effect achieved;
  • at least one class in the sub-groups of G06F 3/1223 for the technique used and
  • optionally one class in the sub-groups of G06F 3/1278 for the infrastructure involved.

Class in G06F 3/1278 is added only if the infrastructure plays a major role in the "invention information".

The classification of "additional information" is optional.

Indexing Code symbols in the sub-groups of G06F 3/1202 and/or G06F 3/1223 and/or G06F 3/1278 and/or G06F 2206/15 should be used for classifying "additional information".

The older documents should be retrieved using Indexing Codes:

  • G06F 3/1293 Printer information exchange with computer;
  • G06F 3/1294 Status or feedback related to information exchange;
  • G06F 3/1295 Buffering means;
  • G06F 3/1296 Printer job scheduling or printer resource handling;
  • G06F 3/1297 Printer code translation, conversion, emulation, compression; Configuration of printer parameters;
  • G06F 3/1298 Printer language recognition, e.g. program control language, page description language.

The "additional information" can be found by combining the above Indexing Code(s) with the Indexing Code G06F 3/1201.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "image forming device/apparatus", "image processing device/apparatus", "image printing device/apparatus", "image output device/apparatus", "image control device/apparatus" and "information processing device/apparatus" and "MFP Multi-Function Printer"
{specifically adapted to achieve a particular effect}
Special rules of classification

This group is not used for classifying documents in it, but to introduce one of the three classification criteria mentioned in the "Special rules for classification" section of G06F 3/1201.

{Improving or facilitating administration, e.g. print management}
Definition statement

This place covers:

All general aspects of printing management which do not fit in the sub-groups.

{resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data}
Definition statement

This place covers:

Preventing the user or operator from / avoiding the need for doing complicated and burdensome actions related to the printing of a document.

{resulting in increased flexibility in print job configuration, e.g. job settings, print requirements, job tickets}
Definition statement

This place covers:

Assisting or helping the user during print job configuration, e.g. increasing granularity in job configuration, achieving more customised settings, proposing suitable settings, preventing selection of incompatible or undesirable print options.

Special rules of classification

This group is usually combined with G06F 3/1253 and its sub-groups in order to characterise the technique for the "invention information".

{resulting in increased flexibility in input data format or job format or job type}
Definition statement

This place covers:

Assisting or helping the user to send a print job regardless of the format or type of data that should be printed. Facilitating usage of old print systems with new print systems, more specifically when compatibility between old data formats and new data formats should be achieved.

{resulting in the user being informed about print result after a job submission}
Definition statement

This place covers:

All aspects that make the user aware of what happened with the print job after it being sent.

Special rules of classification

This group is usually combined with G06F 3/1259 and its sub-groups in order to characterise the technique for the "invention information".

{resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview}
Definition statement

This place covers:

Assisting the user to increase the quality of print output (e.g. matching print output to what was intended by the user, increasing the appeal of the print output), e.g. by using preview screens, test printing. Actions or processing directed to higher fidelity.

Special rules of classification

This group is usually combined with G06F 3/1253 and its sub-groups in order to characterise the technique for the "invention information".

{resulting in adapted or bridged legacy communication protocols, e.g. emulation, protocol extension}
Definition statement

This place covers:

Facilitating usage of old print systems with new print systems, more specifically when compatibility between protocols should be achieved. Modifying/enhancing legacy communication protocols to extend their use into (additional) printing environments or print-related functionality (e.g. modifying Bluetooth to adapt to printing --> Basic Printing Profile (BPP)).

{Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted}
Definition statement

This place covers:

Assisting or helping the user to predict or deal with faults, e.g. device faults, lack of consumables, communication errors. Recovering from faults.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Error or fault reporting or storing

{Improving printing performance}
Definition statement

This place covers:

All aspects of making the job to be printed faster that do not fit in the sub-groups.

{achieving reduced delay between job submission and print start}
Definition statement

This place covers:

Decreasing the time between sending a print job (e.g. pressing "print" button) and actual start of the same job at the print device.

{at an intermediate node or at the final node}
Definition statement

This place covers:

Achieving decreasing the time at the node where the job is either temporarily stored (e.g. computer, server, printer) or actually printed (the printer).

{at the submitting node}
Definition statement

This place covers:

Achieving decreasing the time at the node where the job is initiated from (e.g. computer, server, printer).

{achieving increased printing speed, i.e. reducing the time between printing start and printing end}
Definition statement

This place covers:

Decreasing the time actually spent to print the job, once printing has commenced, at the print device.

References
Limiting references

This place does not cover:

Reducing the time between arriving of the job at the printer till actual print process starts.

{achieving reduced idle time at the output device or increased asset utilization}
Definition statement

This place covers:

Decreasing the time during which the printer is doing nothing.

{Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources}
Definition statement

This place covers:

Saving resources of the printer used for printing a job.

{with regard to consumables, e.g. ink, toner, paper}
Definition statement

This place covers:

Preventing waste of used consumables (see for example US2011051164).

{with regard to computing resources, e.g. memory, CPU}
Definition statement

This place covers:

Optimal usage of system's hardware resources.

References
Limiting references

This place does not cover:

Reducing the number of required printer devices

{with regard to power consumption}
Definition statement

This place covers:

Power saving; reducing energy consumption.

Special rules of classification

This group is usually combined with G06F 3/1229 and its sub-groups in order to characterise the technique for the "invention information".

{Increasing security of the print job}
Definition statement

This place covers:

Adding secure aspects to a print job. Preventing unauthorised printing of a job, limiting the printing based on user credentials.

Special rules of classification

This group is usually combined with G06F 3/1238, G06F 3/1239 or G06F 3/1234 in order to characterise the technique for the "invention information".

{specifically adapted to use a particular technique}
Special rules of classification

This group is not used for classifying documents in it, but to introduce one of the three classification criteria mentioned in the "Special rules for classification" section of G06F 3/1201.

{Client or server resources management}
Definition statement

This place covers:

All aspects that deal with the software or hardware resources of the client or server which do not fit in the sub-groups (see e.g. US2011013223, US2009007151).

{Software update, e.g. print driver, modules, plug-ins, fonts}
Definition statement

This place covers:

Updating or installing printer drivers on the client or server. Adding additional functionality to existing printer drivers (e.g. installing plug-ins, downloading printer definition files). Support for newly installed printers by replacing/updating existing drivers.

{Discovery of devices having required properties}
Definition statement

This place covers:

The client or the server sends requests to find suitable printers for printing based on certain requirements, e.g. colour, double side printing, finishing options, status, location, supported encryption, etc.

References
Limiting references

This place does not cover:

Device discovery specifically adapted for a queued job and aiming at e.g. load balancing or optimised printing

Printer device status.

Network management in general

{Printer definition files}
Definition statement

This place covers:

Printer properties and commands to invoke/execute the printing properties are described in a separate file and can be used by an application program to convert a print job according to certain printer properties without a printer driver. The file can be used by the printer driver as well, e.g. for supporting different printers (see e.g. "Service Item File" in US6897974).

References
Limiting references

This place does not cover:

Driverless printing

{Printing driverless or using generic drivers}
Definition statement

This place covers:

Specific printer drivers are not used but also printer definition files are not used. Usually a thin client with limited resources is involved. Generic drivers normally are designed to support plurality of different types/models of printers and/or different operating systems.

{Printer resources management or printer maintenance, e.g. device status, power levels}
Definition statement

This place covers:

Device status when checked only in relation to printing of a job - power-level (e.g. on, off, power saving mode), operating or not, reasons for the malfunctions. Logging of device status. All aspects for managing the device which do not fit in the sub-groups.

References
Limiting references

This place does not cover:

Print job status.

Device discovery in general

Network management in general

{Software or firmware update, e.g. device firmware management}
Definition statement

This place covers:

Downloading or updating of printer's firmware. Installing new software for supporting newly added hardware or additional functions (e.g. image processing functions, resident fonts, support for new data formats).

{Device related settings, e.g. IP address, Name, Identification}
Definition statement

This place covers:

Update or initialisation of the printer specific properties - IP address, Device name (see e.g. EP1372059, US2005151988).

References
Limiting references

This place does not cover:

Printer device capabilities

{Transmitting printer device capabilities, e.g. upon request or periodically}
Definition statement

This place covers:

Transmitting to the requestor printing device capabilities, e.g. double side printing, finishing options, dpi, colour or b/w, ppm (see e.g. EP1435565, EP1178393).

References
Limiting references

This place does not cover:

Printer device properties/settings, not related to printing capabilities, i.e. IP address. This aspect is covered in

{Errors handling and recovery, e.g. reprinting (G06F 3/1261 takes precedence)}
Definition statement

This place covers:

How to handle received jobs or the job currently being printed in case of error, e.g. reprint only the portion that was not printed, reprint the full job, delete the job and ask the host to send it again.

References
Limiting references

This place does not cover:

Alternate printer taking over the job from the failed device.

Device malfunctions which do not involve sending a print job.

Informative references

Attention is drawn to the following places, which may be of interest for search:

Error or fault reporting or storing

{caused by end of consumables, e.g. paper, ink, toner}
Definition statement

This place covers:

Specific aspects for recovering from errors caused by end of consumables - paper, ink, toner.

{Connection management}
Definition statement

This place covers:

All aspects relating to connection between devices - client<->printer, server<->printer, printer<->printer. (see e.g. US2011019231 or US2011019231).

{Print job management}
Definition statement

This place covers:

General aspects of job management that do no fit in the sub-groups.

References
Limiting references

This place does not cover:

Print device management

{Secure printing, e.g. user identification, user rights for device usage, unallowed content, blanking portions or fields of a page, releasing held jobs}
Definition statement

This place covers:

Based on user/content credentials allowing/disabling usage of the printer as a whole.

References
Limiting references

This place does not cover:

Virus detection and handling.

{Restricting the usage of resources, e.g. usage or user levels, credit limit, consumables, special fonts}
Definition statement

This place covers:

Limiting the use of printing as such (e.g. credit limit) or limiting the use of printers (e.g. time the printer can be used, e.g. only 1 hour a day, only after 17:00). Restricting configuration options, e.g. to plain paper, to black ink only, double-sided or n-up printing, lower resolution, limited image effects.

Special rules of classification

This group is usually combined with G06F 3/1219 or G06F 3/122 in order to characterise the effect achieved by the "invention information".

{Parallel printing or parallel ripping}
Definition statement

This place covers:

Printing or ripping several portions of a job at the same time.

Special rules of classification

This group is usually combined with G06F 3/1215 in order to characterise the effect achieved by the "invention information".

{Dividing a job according to job requirements, e.g. black/white and colour pages, covers and body of books, tabs}
Definition statement

This place covers:

Print job is divided and different parts are sent to different devices having different properties.

References
Limiting references

This place does not cover:

Dividing for parallel printing

{Image or content composition onto a page}
Definition statement

This place covers:

Composing or overlaying content from different sources, e.g. different documents, onto a page.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

2D [Two Dimensional] image generation

Image acquisition

{Variable data printing, e.g. document forms, templates, labels, coupons, advertisements, logos, watermarks, transactional printing, fixed content versioning}
Definition statement

This place covers:

Print data for a page is generated by combining two sets of content (such as text, graphics and images), one set being constant from page to page (fixed content) and the other set being different (variable content) for every page. The combining of fixed and variable data may take place at any step in a print workflow.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Editing, e.g. insert/delete

Document retrieval systems

{Job translation or job parsing, e.g. page banding}
Definition statement

This place covers:

All aspects of transforming the print job in order to be printed which do not fit in the sub-groups, e.g. parsing in order to eliminate repetitive data, colour transformation, font transformation.

{by conversion to intermediate or common format}
Definition statement

This place covers:

Conversion or translation of the initial document or print job to a format which is not yet ready to be handled by a target printer but is useful for certain manipulation, e.g. faster to transmit, more efficient to store, easy to secure. Conversion or translation to a format which, although it could be suitable to certain printers, may not be suitable for the target printer (e.g. converting to a print format before target printer is known).

{by handling markup languages, e.g. XSL, XML, HTML}
Definition statement

This place covers:

Parsing of print jobs written in one of the mark-up languages.

{by conversion to printer ready format}
Definition statement

This place covers:

Conversion or translation of the initial print job (or the job in an intermediate format) to a format which is ready to be handled by the target printer.

{by printer language recognition, e.g. PDL, PCL, PDF}
Definition statement

This place covers:

Parsing of the job in order to find a certain mark (or keyword) that identify the language of the job.

{Page layout or assigning input pages onto output media, e.g. imposition}
Definition statement

This place covers:

Arrangement of the product's pages (e.g. document pages) on the output medium (e.g. paper sheets or media roll).

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Pagination

{for continuous media, e.g. web media, rolls}
Definition statement

This place covers:

Specifically adapted to when media to be fed by the printer is of long length, e.g. web media, rolls.

{for sheet based media}
Definition statement

This place covers:

Specifically adapted to when media to be fed by the printer is of short length, e.g. sheets (regardless of whether said media is to be folded or cut after printing. See e.g.US2010039670).

{Configuration of print job parameters, e.g. using UI at the client}
Definition statement

This place covers:

All aspects of configuring how the job should be printed which do not fit in the sub-groups.

{Automatic configuration, e.g. by driver}
Definition statement

This place covers:

Automatic allocation of (some) print settings by software, e.g. print driver, (on the client or server) when a print job is to be printed.

Special rules of classification

Double classification possible if G06F 3/1239 also apply.

{Settings incompatibility, e.g. constraints, user requirements vs. device capabilities}
Definition statement

This place covers:

Limiting the possibilities given to the user at the time of configuring print job, e.g. in b/w printer hide the option for colour printing, hide the option for double side printing if the printer does not support it or if "transparencies" is selected as media (see e.g. WO2010016234).

Comparing how the job should be printed and what the printer can offer when the job is sent from the client. Automatic adjusting of some of job's settings in order to fit the printer's settings or asking the user to solve the conflict settings manually (see e.g. EP1986410).

Special rules of classification

This group is usually combined with G06F 3/1204 or G06F 3/1208 in order to characterise the effect achieved by the "invention information".

{User feedback, e.g. print preview, test print, proofing, pre-flight checks}
Definition statement

This place covers:

Techniques for checking how the job will look like when printed either by using a preview on a display, by checks performed by software (pre-flight, pre-press) or by real print of part of the job.

Special rules of classification

This group is usually combined with G06F 3/1208 in order to characterise the effect achieved by the "invention information"

{by using pre-stored settings, e.g. job templates, presets, print styles}
Definition statement

This place covers:

Previously defined settings are stored (e.g. as a template) and, when configuring a new print job, the stored settings are used instead of selecting a value for each print option.

References
Limiting references

This place does not cover:

Document templates, i.e. fixed content..

Special rules of classification

This group is usually combined with G06F 3/1204 in order to characterise the effect achieved by the "invention information".

{by updating job settings at the printer}
Definition statement

This place covers:

Changing/updating of settings of a received or currently being created print job using UI of the printer.

{Print job monitoring, e.g. job status}
Definition statement

This place covers:

Supervising of a print job after being sent for printing, e.g. printed, failed, queued. Job status can be requested (by the sending node) or received automatically after job sending.

References
Limiting references

This place does not cover:

Printer device status

Special rules of classification

This group is usually combined with G06F 3/1207 in order to characterise the effect achieved by the "invention information".

{Job scheduling, e.g. queuing, determine appropriate device}
Definition statement

This place covers:

Techniques relating to where and/or when the job should be printed which do not fit in the sub-groups. Queuing the jobs before printing, e.g. waiting a long job to finish. Finding a printer based on the job requirements.

References
Limiting references

This place does not cover:

Determining appropriate device aiming at providing the user with more print destinations or at installing required software for discovered devices

{by using alternate printing}
Definition statement

This place covers:

Determining different (alternative) device for printing a job if the designated device can not print the job, e.g. due to failure, lacking of resources or excessive delay expected (see e.g. US7027169).

References
Limiting references

This place does not cover:

The same job printed by the same print device after recovered from a failure (i.e. reprinted)

{by grouping or ganging jobs}
Definition statement

This place covers:

Combining several print jobs in one job (group job), printing print jobs in batches (e.g. jobs requiring same media or same post-processing, jobs submitted by the same user or intended for the same recipient) (see e.g.WO2008039689).

{based on job priority, e.g. re-arranging the order of jobs, e.g. the printing sequence}
Definition statement

This place covers:

Changing the order of print jobs according certain priorities - either user-defined or automatically determined.

{by assigning post-processing resources}
Definition statement

This place covers:

Determining resources to perform actions/functions on printed output (i.e. after printing) as specified by the job settings (e.g. folding, cutting, trimming, binding).

{Printing by reference, e.g. retrieving document/image data for a job from a source mentioned in the job}
Definition statement

This place covers:

The print job as submitted does not comprise the document or print data that should be printed but only a reference to it or to its location (e.g. a URL, a file path). The document is later (e.g. when queuing the job or shortly before printing should commence) obtained from its location.

{Job repository, e.g. non-scheduled jobs, delay printing}
Definition statement

This place covers:

Storing a print job for a certain time before it being printed (e.g. a job to be printed at or after a certain time) or in case it should be re-printed subsequently. Storing the job until certain condition is fulfilled, e.g. user authorisation, recovering from an error state...

References
Limiting references

This place does not cover:

Normal queuing, e.g. waiting a previous job to finish..

{Job submission, e.g. submitting print job order or request not the print data itself}
Definition statement

This place covers:

Sending a request to print a job. The real job data will be sent or requested later. All aspects of sending a print request (e.g. submitting a document for printing, submitting a print job or a print order) which do not fit in the sub-groups.

References
Limiting references

This place does not cover:

Printing by reference

Special rules of classification

Specific ways to send a request to print a job, e.g. scanning a page with a barcode and receiving printed pages with information identified by the barcode from a remote source.

{by broadcasting server}
Definition statement

This place covers:

Server storing user's desires about receiving printed materials, e.g. subscription, and sending personalized print jobs to all users (or users' printers) accordingly.

{by using hot folders, e.g. folder for which print settings or print data management rules are set in advance}
Definition statement

This place covers:

Folders with associated printing instructions (e.g. print settings or print-related tasks, such as automatic notifications). When a document or job is sent to a folder it will be processed according to the printing instructions associated with the folder.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

 Print workflow management

{Job submission at the printing node, e.g. creating a job from a data stored locally or remotely (G06F 3/1238 takes precedence)}
Definition statement

This place covers:

Using the UI of the printer to configure a new job. The data for the job could be stored on the printer or at a different location, e.g. server.

References
Limiting references

This place does not cover:

Releasing a stored job according to the user identification

Informative references

Attention is drawn to the following places, which may be of interest for search:

Printing by reference

{Digital storefront, e.g. e-ordering, web2print, submitting a job from a remote submission screen}
Definition statement

This place covers:

Configuring and submitting a job using online based resources, e.g. accessing remote print service providers, choosing from web based content.

{Print job history, e.g. logging, accounting, tracking}
Definition statement

This place covers:

Creating, managing and using of print job history (see e.g. EP1860546).

{Deleting of print job}
Definition statement

This place covers:

Specifically instructing or managing job deletion based on certain criteria, e.g. memory usage, privacy, avoiding mixing of received jobs (see e.g. US2005275864).

{Print workflow management, e.g. defining or changing a workflow, cross publishing}
Definition statement

This place covers:

Designing or modifying the steps to be performed to a print request from choosing document(s) to be printed to finalising the printed job (e.g. post-processing actions). Adding conditional steps, e.g. what should happen in case of certain events (see e.g.US2008170254).

{within a printer driver, e.g. driver resides either on a server or on a client}
Definition statement

This place covers:

Print workflow management is done by the driver, regardless where it resides - client or server.

{using filter pipeline, e.g. outside the driver, adding traps}
Definition statement

This place covers:

No driver is involved in the filter pipeline. Workflow formed by pieces of software, called "filters" (see e.g. US2002135800).

References
Limiting references

This place does not cover:

Filters within a printer driver.

{specifically adapted to adopt a particular infrastructure}
Special rules of classification

This group is not used for classifying documents in it, but to introduce one of the three classification criteria mentioned in the "Special rules for classification" section of G06F 3/1201.

{Controller construction, e.g. aspects of the interface hardware}
Definition statement

This place covers:

All aspects of hardware structure of the interface controller of the printer device if the "invention information" mainly focuses on them.

{Direct printing, e.g. sending document file, using memory stick, printing from a camera}
Definition statement

This place covers:

Printing from an USB stick or digital camera directly connected to the printer device.

{Multi engine printer devices, e.g. one entity having multiple output engines}
Definition statement

This place covers:

Printer device having plurality of print engines in order to increase printing speed.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Parallel printing or parallel ripping

{in server-client-printer device configuration, e.g. the server does not see the printer}
Definition statement

This place covers:

Network configuration where the information from the server to the printer device always goes via the client.

{in server-printer device-client configuration, e.g. print flow goes from server to printer and then bidirectional from printer to client, i.e. the client does not communicate with the server}
Definition statement

This place covers:

Network configuration where the client accesses the server via the printer.

Digital output to plotter {; Cooperation and interconnection of the plotter with other functional units}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Arrangements for producing a permanent visual presentation of the output data using plotters

Digital output to display device; {Cooperation and interconnection of the display device with other functional units} (control of display in general G09G; arrangements for producing a permanent visual presentation of the output data G06K 15/00)
Definition statement

This place covers:

  • Interfaces between processor and display system (with of without a standard bus);
  • Multiple busses connecting processor, display system and/or other subsystems: e.g. video zoom busses, multimedia busses besides the standard bus.
  • Data being furnished to the display system being generated by a multiplicity of sources.
  • Data of different types being furnished to the system that displays the data (it can be a display system or a complete computer).
  • Interfaces between the host and the display system, especially for system that have a structure different from the structure outlined above (older or special systems).
  • Plurality of symbol or graphics generators cooperating with one display unit.
  • Aspects of the operating system that have impact on the display system and are not related to a particular aspect of the display phisical construction.
  • Transferring data from a Internet host to the display system
  • kvm-switches, in the case that they switch (also) between a plurality of data sources (i.e. computers).
References
Limiting references

This place does not cover:

Arrangements for producing a permanent visual presentation of the output data

Control of display in general

Informative references

Attention is drawn to the following places, which may be of interest for search:

Kvm-switches, only linked to one computer as data source

Audio-visual communications

Special rules of classification
  • In the first case (standard bus present) the documents will be classified only if they contain details of the standard interface that are peculiar for the display system; in the second case are included all the "non standard" interfaces.
  • Data handling that is pertinent neither to the kind of visualisation unit that is used nor to the frame buffer access (G09G 5/39 and subgroups)
  • [2001] - Subclass reorganized in 2001. The description of the contents of the class has changed since some parts of the documents have been moved to G09G (for examples the documents dealing with graphics controllers).
  • Old contents:

display cooperating with 2 or more processors in one terminal;

CRT controller cooperating with CRT and flat panel display(s);

power control of the flat panel if a CRT is also present;

detection of the connection of an extra display panel;

plurality of symbol generators cooperating with a plurality of display units;

plurality of displays cooperating with one memory;

workstation controller, console emulation;

  • all viable Indexing Codes were assigned to the documents in this group at the moment of reorganisation (begin 2001). So all the documents in the main group (G06F 3/14) and in the new subgroups (C, C2, C4, C6, T, T1) are completely coded.

[1999] - G09G 2300/026 completely assigned on 3-12-1999.

{with means for detecting differences between the image stored in the host and the images displayed on the displays}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Digital output to display device involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays

{controlling a plurality of local displays, e.g. CRT and flat panel display}
Definition statement

This place covers:

General group for documents in which more than one display unit is connected to the display system, irrespective of the type of display. If it is clear that the display system contains one or more display controllers, then the subgroups C2 and C4 take precedence.

References
Limiting references

This place does not cover:

Using a single graphics controller

Using more than one graphics controller

Special rules of classification
  • See G09G 2360/04 for documents where one display (device) controller controls two displays as well as for old documents (up to and including 2001).

Controlling a plurality of local displays, with or without display controller:

  • In many cases, when more than one display terminal is controlled by a local host, there are also some details of the display controller present in the document. Should this document be classified in G06F 3/1423 (and subgroups) or in the G09G 5/363 (display controller)? I gave precedence to the G06F groups. So the "plurality of displays" takes precedence over the "display controller". Of course, the code can be given if the details of the display controller are interesting and not only related to the fact that more than one display terminal is connected to it (Gigi Farricella, 14.05.2001).

Conflict between "plurality of local displays" and "conversion of CRT signals for a flat panel".

  • Conflict between G06F 3/1423, G06F3/14C2 and G06F3/14C4 and G09G 5/366: the documents that have to be classified in the latter group might have more than one display, namely the crt AND the lcd. In these cases the documents should have both symbols, in the sense that they have to be classified in one group and receive the CODE of the other group. The choice between class and code is made depending on the content of the document: if the subject matter is mainly the interface, then the G06F class is preferred, if it is the graphic controller, than the G09G class is given.

Comments: reorganisation not finished. For search see also G09G 2360/04 .

{using a single graphics controller}
Definition statement

This place covers:

One single graphics controller (VGA, SVGA or other systems) controls two or more display units. Often one graphics controller card has interface circuitry for interfacing to CRT and to flat panel.

Special rules of classification

Documents are classified in G06F 3/1431 or G06F 3/1438 if there is a "graphics controller" present in the system, i.e. an interface between the standard bus and the display terminal that contains a graphics processor and a frame bufer. If the plurality of displays are connected to the host processor in a different, non standard, way, or if it is not possible to determine if a graphics controller is present (like for example in the old fashoned "terminals"), the documents will be classified in G06F 3/1423.

{display composed of modules, e.g. video walls}
Definition statement

This place covers:

Illustrative example of subject matter classified in this group: GB2441353.

media20.jpg

Special rules of classification
{involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay}
Definition statement

This place covers:

Also screen sharing where the framebuffer is sent to remote displays, as is commonly done in application sharing (well know as Virtual Network Computing (VNC) pn:XP002142727 ).

Examples:

  • pn:WO9201281 - This is a case of "remote display" on X-windows terminals, but the rendering is done centrally, and only the modified sections of the frame buffers are sent to the remote stations. This is a case of "remote" local display. There is no teledisplay in this case because the remote display stations are acting as "terminals" of the host. This document was classified in G06F 3/1423 but a code G06F 3/1462 was given to indicate that the x-Window terminals allow for teledisplay and that only the modified sections of the frame buffers were sent to the display units.
  • pn:US5996002 - Another good example of "teledisplay" comes from the abstract: A collaborative work support system that is performed on plural computers each of which is assigned for an operator, and supports collaborative work in which the plural computers display common data and each operator operates the displayed common data through his own computer.
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Interaction techniques specific for application sharing, as now several users may want to interact with the same display

Multiprogramming arrangements; (implementation details of the sharing technique if not framebuffer based, i.e. really the inner workings, exchanged data structures

Office automation, groupware

Electronic classroom, remote teaching

Network arrangements for conferencing, chatrooms, etc

Network protocol for the sharing technique

Telephonic multimedia conference systems

Videophones

Special rules of classification

DA wrt CPC: improvement of definition badly required; title requires displaying on two displays; description (teledisplay) appears to require display on remote (self-controlled) display.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

CSCW

Computer Supported Collaborative Work

In patent documents, the following words/expressions are often used as synonyms:

  • "Application sharing" and "Shared application"
  • "Groupware" and "Computer Supported Collaborative Work"
{with means for detecting differences between the image stored in the host and the images displayed on the remote displays}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Digital output to display device with means for detecting differences between the image stored in the host and the images displayed on the displays

using display panels
Definition statement

This place covers:

Display panels: LEDs, PDP, LCD, etc. Interconnection of POS (point of sales) terminals. For details see G06F 3/14.

References
Limiting references

This place does not cover:

Arrangements of circuits for control of indicating devices using static means to present variable information

Informative references

Attention is drawn to the following places, which may be of interest for search:

Data processing in buying/selling transactions, e.g. when dealing with POS terminals

Services or facilities specially adapted for wireless communication networks

Services making use of the location of users or terminals

Special rules of classification

[1999] - G09G 2300/026 completely assigned on 3-12-1999.

{with conversion of CRT control signals to flat panel control signals, e.g. adapting the palette memory}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

with conversion of CRT control signals to flat panel control signals

Sound input; Sound output (conversion of speech into digital information or vice versa G10L)
Definition statement

This place covers:

General computer sound interfaces for interaction with computer programs or users

Relationships with other classification places
  • information retrieval of audio data G06F 17/3074;
  • production of synthetic speech signals G10L 13/00;
  • recognition of speech G10L 15/00;
  • measurement of sound waves in general G01H;
  • image data processing G06T;
  • teaching or communicating with the blind, deaf or mute G09B;
  • electronic musical instruments G10H;
  • sound production G10K
  • information storage, e.g. sound storage, G11B;
  • electronic circuits for sound generation H03B;
  • electronic filters H03H;
  • coding, decoding or code conversion, error protection in general H03M;
  • telephonic communication H04M;
  • switching systems H04Q
  • microphone arrangements, hearing aids, public address systems H04R;
  • spatial sound reproduction H04S;
References
Limiting references

This place does not cover:

  • processing of speech or voice signals in general (G10L11/00);
  • production of synthetic speech signals (G10L 13/00);
  • recognition of speech (G10L 15/00);
  • coding/decoding of audio signals for compression and expansion (G10L 19/00);
  • modification of speech signals, speech enhancement, source separation (G10L 21/00);
  • noise filtering or echo cancellation in an audio signal (G10L 21/00);
  • devices for the storage of speech signals (G11B 27/00);
  • spatial sound recording (H04R 5/00)
  • spatial sound reproduction (H04S)
  • encoding of compressed speech signals for transmission or storage (H04L).
  • coding of audio signals in musical instruments (G10H)
  • karaoke or singing voice processing (G10H)
  • amplifiers (H03F)
  • gain or frequency control (H03G 3/00)
  • broadcasting (H04H)
  • handling natural language data (G06F 17/20)
{Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs}
Definition statement

This place covers:

Dedicated hardware or software components for interfacing to an audio device i.e. translating the audio stream from a host into a format accepted by the audio device and vice-versa. Providing hardware emulation for an audio source. Intermediation with OS when receiving audio to preserve sound quality. Connecting a host to a mobile phone to aid processing audio to enhance quality Adapting drivers to different audio source formats

References
Limiting references

This place does not cover:

Interfacing to a peripheral in general: G06F 13/385 CODECs as such: G10L19/14

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

CODEC: coding / decoding, compression/decompression of an audio signal.

Synonyms and Keywords

CODEC audio device driversound card driver

{Management of the audio stream, e.g. setting of volume, audio stream path}
Definition statement

This place covers:

Management from a host of the audio device by means of the interface control for modifying the operation of the audio device. Only for control of the audio device/sytem from the host. Controlling the audio settings such as volume, mute, filters ... Controlling the audio stream path (switch output destination). Switch on or off of computer audio devices. Controlling the audio play, pause, replay.

References
Limiting references

This place does not cover:

Dedicated to TV appliances: H04N 7/00 Control of streaming: H04L 29/06 Control of speech to text / text to speech conversion: G10L 13/00 and G10L 15/00

{Audio in a user interface, e.g. using voice commands for navigating, audio feedback}
Definition statement

This place covers:

Interface to a computer user by means of an audio device to send commands to the computer or receive feed-back on an action. Limited to the navigation in a menu and sending control commands. Moving a mouse pointer on a screen using audio. Scrolling through a menu using audio. User interface of an audio card. Audio indicators to focus attention.

References
Limiting references

This place does not cover:

User interaction and feedback in general: G06F 3/01 User interaction in a menu in general: G06F 3/048 Speech recognition per se: G10L 15/26, G10L 15/22

Methods or arrangements for data conversion without changing the order or content of the data handled (by coding or decoding H03M)
Definition statement

This place covers:

Data format conversions; Conversion between packed and unpacked BCD.

References
Limiting references

This place does not cover:

Parallel-serial conversion. Code conversion

Informative references

Attention is drawn to the following places, which may be of interest for search:

Coding, decoding or code conversion, in general

Special rules of classification

Use of Indexing Codes

ECLA reformed field, i.e. all ECLA classes have a corresponding G06F Indexing Code-code, which is to be used for secondary aspects (non-invention information).

for shifting, e.g. justifying, scaling, normalising {(digital stores in which the information is moved stepwise, e.g. shift-registers G11C 19/00; digital stores in which the information circulates G11C 21/00)}
Definition statement

This place covers:

Shifting which modifies the value being shifted, e.g. in arithmetic or for implementing shift instructions in processors; in particular the shifting functionality provided and the logic implementing it.

References
Limiting references

This place does not cover:

Exception handling

Rounding

Sign extension

Electrical details of cells

Digital stores in which the information is moved stepwise, e.g. shift-registers

Digital stores in which the information circulates

Special rules of classification

Use of Indexing Codes:

Indexing Codes G06F 7/49905, G06F 7/49942, G06F 7/49994 are use for secondary aspects (non-invention information).

{in floating-point computations}
Definition statement

This place covers:

Details of the shifting arrangement.

References
Limiting references

This place does not cover:

Denomination or exception handling

{having at least two separately controlled shifting levels, e.g. using shifting matrices (G06F 5/012 takes precedence)}
Definition statement

This place covers:

For example, barrel shifter with multiple shifting stages.

References
Limiting references

This place does not cover:

Methods or arrangements for data conversion without changing the order or content of the data handled for shifting in floating-point computations

for changing the speed of data flow, i.e. speed regularising {or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor; (G06F 7/78 takes precedence)}
Definition statement

This place covers:

E.g. Shift registers with certain functionality and logic implementing it.

E.g. Buffer systems in general.

E.g. Fifos using linked lists.

E.g. Fifos of the types "shift-in, individual-out" or "individual -in, shift-out".

E.g. Effectuating transfer of data between different clock domains

References
Limiting references

This place does not cover:

Reordering based on contents of data in general

FIFOs having (limited) facilities for outputting other than the first data items, e.g. "either first or second out"

FIFO with priority-controlled output

{Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's}
References
Limiting references

This place does not cover:

Addressing methods of the memory

having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register {(G06F 5/065 takes precedence; shift registers per se G11C 19/00)}
Definition statement

This place covers:

E.g. physical shifting of data.

References
Limiting references

This place does not cover:

FIFOs of the types "shift-in, individual-out" or "individual-in, shift-out"

Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Shift registers per se

having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory {(G06F 5/065 takes precedence)}
References
Limiting references

This place does not cover:

FIFOs of the types "shift-in, individual-out" or "individual-in, shift-out"

Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Addressing methods of the memory

Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
Definition statement

This place covers:

E.g. signal generated / action taken before buffer runs full/empty.

for overflow or underflow handling, e.g. full or empty flags
Definition statement

This place covers:

Signal generated / action taken when buffer is already full/empty.

Multiplexed systems, i.e. using two or more similar devices that are alternately accessed for enqueue and dequeue operations, e.g. ping pong buffers
Definition statement

This place covers:

E.g. Alternating address by address, i.e. Odd-even.

References
Limiting references

This place does not cover:

Addressing methods of the memory

Methods or arrangements for processing data by operating upon the order or content of the data handled (logic circuits H03K 19/00)
Definition statement

This place covers:

The methods and arrangements in this main group are one level above logic circuits.

Examples of such methods and arrangements are: arithmetic circuits implemented using basic logic gates, implementation of complex logic gates, implementation at transistor level, specially designed for arithmetic operations

Other examples are:

Logical operations on words per se;

Finite state machines;

Grey System Theory (method of handling uncertainty),

  • Asynchronous digital pipeline = clock-less operation of logical operations.
References
Limiting references

This place does not cover:

Logical operations on words in combination with arithmetic operations

Arrays of processors with common control

Conversion between different representations of Boolean functions, e.g. Boolean formula synthesis from Karnaugh maps, generation of Reed-Muller expansions

Complex mathematical operations

Information retrieval, or database structures therefor

Logic circuits, i.e. Implementation of basic logical circuits (AND, NAND, OR, NOR, EXOR, EXNOR), at transistor level

Special rules of classification

Use of Indexing Codes:

All ECLA classes have a corresponding G06F Indexing Code-code, which is to be used for secondary aspects (non-invention information).

Indexing Codes in the G06F 2207/00 are used (i.e. compulsory) for invention information in certain ranges only:

G06F 2207/00+ for the entire G06F 7/00

G06F 2207/38+ for G06F 7/38 and subgroups, i.e. G06F 7/38 - G06F 7/575

G06F 2207/48+ for G06F 7/48 and subgroups, i.e. G06F 7/48 - G06F 7/575

G06F 2207/552+ for G06F 7/552 and subgroup, i.e. G06F 7/552 - G06F 7/5525.

Reconfigurable for different fixed word lengths (multigauge devices G06F 2207/3828 ) i.e. a restricted number of fixed word-lengths, e.g. single & double precision

Unit distance code e.g. Grey codes

Clockless, i.e. asynchronous operation used as a design principle (G06F 2207/3888 takes precedence) e.g. using a Muller C-element

Precharge of output to prevent leakagei.e. precharge in general, not only for leakage prevention

Pipelining i.e. only synchronous pipelining;

Bit slicing i.e. data is split into slices of smaller width, each being processed separately

Cascode or current mode logic i.e. digit determination through current (not voltage)

Multiplexers used in an unusual way

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Individual record carriers

Designates physically distinct carriers carrying digital information, e.g. sheets, cards.

Comparing digital values (G06F 7/06, {G06F 7/22, } G06F 7/38 take precedence; information retrieval G06F 17/30; comparing pulses H03K 5/22)
Definition statement

This place covers:

For example, bit string matching, character string matching.

References
Limiting references

This place does not cover:

Arrangements for sorting, selecting, merging or comparing data on individual record carriers

Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc

Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation

Information retrieval

Comparing pulses

{Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator}
Definition statement

This place covers:

Magnitude comparison generating less-than, greater-than, equal-to signals.

References
Limiting references

This place does not cover:

Min or max functions producing one of the two input values

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Window comparator

determines in which window defined by multiple values a certain value falls

Arrangements for sorting, selecting, merging or comparing data on individual record carriers (sorting of postal letters B07C; conveying record carriers from one station to another G06K 13/02)
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Sorting of postal letters

Conveying record carriers from one station to another

Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
Definition statement

This place covers:

E.g. classifying digital data.

E.g. maximum, minimum or median value of a set of data.

References
Limiting references

This place does not cover:

Minimum or maximum of two values

Classifying in pattern recognition

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "Batcher sorter" , "bitonic sorter" and "odd-even merge"
Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
Definition statement

This place covers:

E.g. documents on number representations without dealing with the technical circuit implementation.

for evaluating functions by calculation {(G06F 7/4824 takes precedence)}
References
Limiting references

This place does not cover:

Using signed-digit representation

Informative references

Attention is drawn to the following places, which may be of interest for search:

With a look-up table

Complex mathematical operations

Random or pseudo-random number generators
Definition statement

This place covers:

Generation or transformation of stochastic functions; generation of output with certain random characteristics; post processing, e.g. pattern elimination, whitening, reducing auto-correlation or bias; breakdown detection.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Transformation of stochastic functions by table look-up

Lottery apparatus

Random pulse generators, random bit generators

Secret telegraphic communication

Special rules of classification

Random bit generators: In case of a bit sequence, which could be seen as a random number sequence, classification is done both in the appropriate (sub)group in G06F 7/58 and in H03K 3/84.

Methods both valid for random and pseudo-random number generators should be classified in the head group (G06F 7/58) and not in a sub-group, even if a specific PRNG/RNG is discussed.

Double classification head group / main group only

  • on basis of other aspects, e.g. possibly non-trivial PRNG or RNG also disclosed
  • in case it is not sure that the method is valid for both RNG and PRNG

Use of keywords

Pseudo-random number generators i.e. only deterministic PRNGs;mixed RNGs in G06F 7/588 if more than one type of pseudo-random number generator is discussed:- in case these PRNGs are clearly trivial: classify in head group ( G06F 7/582 ) - in case a PRNG might be non-trivial: classify in relevant sub-group(s)

Using finite field arithmetic, e.g. using a linear feedback shift registergenerators including the 2**n state with all zeroes in G06F 7/582

Random number generators, i.e. based on natural stochastic processes also mixed PRNG/RNGs Considered as random (G06F 7/588 ) are methods based on - radioactivity, zener, race, chaos- uncertain moment of pressing a key

Using non-contact-making devices, e.g. tube, solid state device; using unspecified devicese.g. 2's complementing

Using coordinate rotation digital computer (CORDIC)i.e. CORDIC in non-complex environment: G06F 7/5446

Using signed-digit representationBinary multipliers and dividers often use signed-digit representation internally for one operand or the result; see therefor "recoded" or "Booth" multipliers in G06F 7/523 - G06F 7/5338 and "recoded" or "SRT" dividers in G06F 7/535 - G06F 7/5375.

Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational number, logarithmic number system, floating-point numbers (conversion to or from floating-point codes H03M 7/24) ( G06F 7/4806, G06F 7/4824, G06F 7/49, G06F 7/491, G06F 7/544 take precedence)e.g. fused multiply add (FMA) also here, but add G06F 7/5443

Logarithmic number system mainly for non-trivial operations such as addition.multiplication of binary operands via the log-domain is in G06F 7/5235

Adding; Subtracting (G06F 7/4833 takes precedence)e.g. floating-point addition

Dividingi.e. floating-point division

Multiplying i.e. floating-point multiplication If in fact only the mantissa-multiplication is treated, classification should be made in another group, unless special features for switching between fixed and floating point operands are described.

Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix (non-linear PCM, G06F 7/4824 takes precedence) N-ary logic

Multiplying; Dividing MULTIPLICATION ONLY division goes into G06F 7/4915, whether it uses 8421 code or not

Mantissa overflow or underflow in handling floating-point numberse.g. exponent adjustment

Normalisation mentioned as feature only 'i.e use of normalisationImplementation of floating-point normalisers: G06F 5/012

Significance controli.e. number of significant bits

Implementation of IEEE-754 StandardNote: The standard uses sign magnitude representation

Rounding to nearest (G06F 7/49957 takes precedence)Note: The IEEE-754 way is "rounding to nearest even", which is rounds to nearest, and only when exactly in the middle to nearest even. Though rounding to nearest odd may in fact round to an even number, it normally doesn't.

Rounding towards zero (G06F 7/49957 takes precedence)e.g. as in IEEE-754

Rounding away from zeroway of rounding not provided for in IEEE-754

Interval arithmetici.e. computations with intervals as values

Adding; Subtracting (G06F 7/4806, G06F 7/4824, G06F 7/483 - G06F 7/491, G06F 7/544 take precedence) only binary, radix 8, radix 16..

using carry switching, i.e. the incoming carry is connected directly to the carry output under control of a carry propagate signal Full adders having in general the form1-bit adder stages (ripple carry)

with simultaneous carry generation for or propagation over two or more stages e.g. using group carry signals, e.g. carry skip; all smart carry schemes except carry look-ahead and carry select/ conditional sum are in G06F 7/506

using selection between two conditionally calculated carry or sum values e.g. carry select, conditional sum

for multiple operands, e.g. digital integrators i.e. operand-parallel addition of 3 or more operands (this is mainly "3" or "a lot");multipliers in G06F 7/52

word-serial, i.e. with an accumulator-registeri.e. OPERAND serial!

Multiplying; Dividing (G06F 7/4806, G06F 7/4824, G06F 7/483 - G06F 7/491, G06F 7/544 take precedence) very rare cases only; normally documents are classified in one of the subgroups (or both) This subgroup does not cover G06F 7/5443: multiplier-accumulators (f = ∑ ai xi ), including simple cases f = ax + b, f = ax+ by G06F15/347: vector multipliers, matrix multipliers G06F 7/68: binary rate multipliers/dividers G06F 7/724: finite field multipliers

In serial-parallel fashion, i.e. one operand being entered serially and the other in parallel (G06F 7/533 takes precedence) In old documents these multipliers are often called "parallel", in newer documents they are often called "serial"!

with row-wise addition of partial products i.e. adding two rows each cycleIn majority: "add to accumulator and shift"

In parallel-parallel fashion, i.e. both operands being entered in parallel (G06F 7/533 takes precedence) e.g. single cells for cellular array multiplierse.g. arrays of undetermined type

Using indirect methods, e.g. quarter-square method, via logarithmic domainif operands stay in the log-domain then G06F 7/4833 ;quarter-square see XP013079891

in serial-serial fashion, i.e. both operands are entered serially (G06F 7/533 takes precedence) e.g. Lyon multipliers (see XP007901470)

with row-wise addition of partial productsi.e. adding two rows each cycle

with column-wise addition of partial productse.g. adding one column each cycle with a parallel counter

In parallel-parallel fashion, i.e. both operands being entered in parallel (G06F 7/533 takes precedence) e.g. single cells for cellular array multipliers;e.g. arrays of undetermined type

With row-wise addition of partial products (G06F 7/5324 takes precedence) cellular array multipliers with ripple carry (=within rows) also skewed arrays of the type "McCanny & McWhirter"e.g. linear chain of cascaded adders

With column-wise addition of partial products, e.g. using Wallace tree, Dadda counters (G06F 7/5324 takes precedence)e.g. adder trees

Partitioned, i.e. using repetitively a smaller parallel-parallel multiplier or using an array of such smaller multipliers each smaller multiplier larger than 1 bit; multiprecision; also array multipliers A) n × m bit multiplier consisting of an array of k × l multipliers, k being a submultiple of n and l being a submultiple of m respectively, followed by an array or tree of adders, e.g. of Wallace type. B) n × m bit multiplication realised by a single k × l multiplier, k and l as above, used repetitively and followed by an accumulator.The k × l bit multipliers may be single ROM's for example.Not to be confused with multi-bit-scanning, where a selection among precalculated multiples of the multiplicand is made; if the k × l bit multipliers itself are of the latter type, double classification may be appropriate.

Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even for Booth, use the subgroups!Note: the term "Booth" is often incorrectly used when intending to say "modified Booth". A Booth recoder module inputs some, e.g. two, consecutive bits and sends a 'Booth carry' to a more significant module. A modified Booth recoder module inputs some, at least three, consecutive bits, the most significant of which is also input to the next higher recoder module. In modified Booth the recoder modules are not connected to each other via a carry.

By skipping over strings of zeroes or ones, e.g. using the Booth Algorithme.g. using operand processing, e.g. simple (radix-2, 1st order) Booth, also canonical recoding to NAF form (sequential recoding with carry)

By using multiple-bit-scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate pre-calculated multiple of the multiplicand as a partial product i.e. processing multiple bits per iteration (radix > 2) without overlap, e.g. using positive precalculated multiples only groups of MR-bits are decoded for selecting multiples of MD e.g. 2-bit groups: 3-bit groups: 00 0 × MD 000 0 × MD 01 1 × MD 001 1 × MD 10 2 × MD 010 2 × MD 11 3 × MD 011 3 × MD 100 4 × MD 101 5 × MD 110 6 × MD 111 7 × MDMultiples,that are not a power of 2(3x,7x, etc)have to be precalcultated or looked up in a table.

Each bitgroup having two new bits, e.g. 2nd order MBAi.e. radix-4 modified Booth, i.e. 2nd order modified Booth

Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher (SRT) algorithm (not used, see G06F 7/535 or G06F 7/5375 )NOT USED, non-restoring in general gets the KW non-restoring,SRT in particular goes in G06F 7/5375

Non restoring calculation, where each digit is either negative, zero or positive, e.g. SRT; (WARNING Not complete. Provisionally see G06F 7/535 + G06F 7/5375) almost empty - everything is in Indexing Code G06F 7/5375

For evaluating functions by calculation (with a look-up table G06F 17/10; complex mathematical operations G06F 17/10; G06F 7/4806, G06F 7/4824 take precedence) e.g. min, max of two operands, absolute value, (sum of) absolute differencefinding a maximum value of a set (e.g. during sorting) is in G06F 7/22; direct table lookup of function values is in G06F 1/03 ;table lookup of coefficients during computation goes here, put "table lookup" in the TXT field;

Sum of products (for applications thereof, see the relevant places, e.g. G06F 17/10, H03H 17/00) e.g. MACs; fused multiply add (FMA) for floating point are in G06F 7/483 with G06F 7/5443

using crossaddition algorithms, e.g. CORDIC e.g. sin, cos, tan, sinh, cosh, tanh;CORDIC on complex numbers: G06F 7/4818

Powers or roots, e.g. Pythagorean sumse.g. powers by multiplying the operand by itself (which is not possible with non-integer powers)

Arithmetic logic units (ALU), i.e. arrangements or devices for performing two or more of the operations covered by groups G06F 7/483- G06F 7/556 or for performing logical operations (instruction execution G06F 9/30; G06F 7/49, G06F 7/491 take precedence; logic gate circuits H03K 19/00)e.g. arrangements for performing more than one operation using the same circuitry

Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry: Note: multiplication is not seen as "basic"

Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations {, e.g. using difunction pulse trains, STEELE computers, phase computers (conversion of digital data to or from non-denominational form H03M 5/00, H03M 7/00)}
Definition statement

This place covers:

For example, documents concerning

  • "permutograph";
  • a "Negationsnetz";

Fibonacci code representation.Further details of subgroups

using difunction pulse trains (STEELE computers); phase computers (GAINES). e.g. Delta-Sigma sequences.

number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters (for applications thereof, see the relevant places, e.g. G06F 7/49, G06F 7/5013, G06F 7/509, H03M 1/00, H03M 7/20)

e.g. number of ones counters (parallel counters), compressors, carry save adders 4-2, 7-3, etc, e.g. used in multipliers.

Digital differential analysers, i.e. computing devices for differentiation, integration or solving differential or integral equations, using pulses representing increments; Other incremental computing devices for solving difference equations (G06F 7/70 takes precedence; differential analysers using hybrid computing techniques G06J 1/02) DDA application in numerical control G05B 19/18.Integration per se: G06F 17/10.

Using pulse rate multipliers or dividers pulse rate multipliers or dividers per se (G06F 7/70 takes precedence) (frequency division in electronic watches G04G 3/02; frequency multiplication or division in oscillators H03B 19/00; frequency dividing counters per se H03K 23/00 - H03K 29/00)

e.g. phased locked loop (PLL) with digital divider (thus achieving pulse rate multiplication); PLLs in general are in H03L 7/06;

pulse rate doubling by adding delayed pulses and correcting the duty cycle are in H03K 5/1565; H03K 23/00 - H03K 29/00 mostly relate to analogue aspects.

References
Limiting references

This place does not cover:

Conversion of digital data to or from non-denominational form

using residue arithmetic
Definition statement

This place covers:

A mod N, modulo addition, modulo subtraction

G06E 1/065: optical residue arithmetic devices

applications in:

H03M 13/00, Error detection/correction for coding in general.

G06F 11/00, Error detection/correction in computers.

H04L 1/00, Error detection/correction in transmission.

H04L 9/00, Secret communication.Further details of groups

Modular inversion, reciprocal or quotient calculation (G06F 7/724, G06F 7/727, G06F 7/728 take precedence).

e.g. modular division; both with composite moduli and in prime number fields; inversion in extension fields is in G06F 7/726.

Modular exponentiation (G06F 7/724, G06F 7/727, G06F 7/728 take precedence) [N0302] [C0302]. RSA in general is here.

Finite field arithmetic (for error detection or correction in general H03M 13/00, in computers G06F 11/10).

Mainly (binary) extension fields; prime number fields using modular arithmetic and are in G06F 7/72 - G06F 7/723, G06F 7/727 and G06F 7/728.

For this type of arithmetic also the term "Galois field" and symbols of the type GF (2P) are characteristic.

over elliptic curves

elliptic curve cryptography ECC goes here, but only give class if specific adaptation for ECs.

Inversion; Reciprocal calculation; Division of elements of a finite field E.g. rational functions p(x)/q(x).

Using Montgomery reduction

Montgomery reduction involves adding of multiples of the modulo, followed by right shifting.

using representation by a residue number system

e.g. Chinese Remainder Theorem for non-RSA

A residue number system (RNS) is a system in which a number is represented by a series of digits, each of which is the remainder of that number with respect to a different modulus mi:

e.g.: moduli -> 5 3 2

2610 = 1 2 0

The maximum number representable is M = (∏i mi) - 1

e.g.: (2 × 3 × 5) - 1 = 29 in the above case.

Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders {(with shifting G06F 5/01)}
Definition statement

This place covers:

E.g. leading zero anticipation LZA, priority encoders.

With shifting (during/for detection) details: also in G06F 5/01.

References
Limiting references

This place does not cover:

with shifting

Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data (according to the content of the data G06F 7/06, G06F 7/22; parallel / series conversion or vice versa H03M 9/00)
Definition statement

This place covers:

For example, masking, shuffling

G06F 7/764: Masking. Boolean masking in block or stream ciphers in H04L 2209/04.

G06F 7/766: Generation of all possible permutations. i.e. serial or parallel generation of all permutations.

G06F 7/768: Data position reversal, e.g. bit reversal, byte swapping

e.g. endian conversion;

Endian conversion by memory addressing: G06F 12/04.

Bus coupling with endian conversion: G06F 13/4013.

Endian conversion instruction: G06F 13/4013 .

References
Limiting references

This place does not cover:

Arrangements for rearranging, permuting or selecting data according to the content of the data

Parallel / series conversion or vice versa

for changing the order of data flow, e.g. matrix transposition, LIFO buffers; Overflow or underflow handling therefor
Definition statement

This place covers:

LIFO, also called stack or pushdown store:

  • Reversal of a train of data words.
  • Reversal of a train of data bits.

Devices called FIFO, but having possibilities to extract also other data items than the first one.

Matrix transportation devices.

Other devices with an output sequence different from the input sequence, but independent of the contents of the data.

References
Limiting references

This place does not cover:

FIFO-devices:

cache-memories:

"FIFO" with priority-controlled output:

reordering based on contents of data, e.g. sort key:

Arrangements for software engineering (testing or debugging G06F 11/36; administrative, planning or organisation aspects of software project management G06Q 10/06)
Definition statement

This place covers:

The engineering discipline of creating software and the assistance of computer tools (CASE tools) in exercising the task of software engineering.

The phases covered by G06F 8/00 range from the initial requirements collection up to and including the delivery of software to the end user (excluding the phase of testing and debugging).

References
Limiting references

This place does not cover:

Execution of a stored program

Testing or debugging

Hardware/software co-design

Software project management

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

CASE

Computer-Aided Software Engineering

Requirements analysis; Specification techniques
Definition statement

This place covers:

Capturing user requirements into a more formalised form:

  • Graph notations;
  • Diagramming techniques, e.g. Dataflow diagrams;
  • Requirements specifications;
  • Use of modelling languages such as uml;
  • Petri nets.
References
Limiting references

This place does not cover:

Circuit design

Specification of network protocols

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

UML

Unified Modeling Language

Software design
Definition statement

This place covers:

Determining the design of software, e.g. the modules that will be created, the main structure of each of these modules and the relationships between them.

References
Limiting references

This place does not cover:

Web development (US2006020908)

For Physical Process Control Systems (FR2898698, US5247693)

Multimedia authoring

Software development for telecom switching systems

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

MVC

Model-View-Controller

{Procedural}
Definition statement

This place covers:

The conventional design paradigm, where a design is defined in terms of a sequence of actions to be performed. An example is the Jackson Structured Programming method.

References
Limiting references

This place does not cover:

Procedure invocation and execution

G06F9/40

Informative references

Attention is drawn to the following places, which may be of interest for search:

Declarative

{Object-oriented}
Definition statement

This place covers:

The process of planning a system in terms of interacting objects for the purpose of solving a software problem as defined by the (formalised) user requirements. Examples are the design patterns from the book "Design Patterns: Elements of Reusable Object-Oriented Software" by Gamma et al.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Object-oriented method resolution

Inheritance

Object-oriented systems

Object-oriented databases

Creation or generation of source code
Definition statement

This place covers:

The conceptual step of converting an abstract representation (design or specification) of a software system, into a more concrete representation in the form of program code.

References
Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

Preprocessors

Optimisation of source code

Source to source translation

Porting source code to a different environment

Informative references

Attention is drawn to the following places, which may be of interest for search:

Specification techniques for generating programs

Compilation, i.e. transforming HLL source code into machine code

Reverse enginnering; Extracting design information from a source code

Query generation

{Programming languages or programming paradigms}
Definition statement

This place covers:

Programming languages and paradigms that can be used by a programmer in order to create source code.

References
Limiting references

This place does not cover:

Processing or translating of natural language

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

HLL

High Level Language

{Functional or applicative languages; Rewrite languages}
Definition statement

This place covers:

Languages designed for functional programming that treats computation as the evaluation of mathematical functions. Examples are Sasl, Miranda and Haskell.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Functional programming

software development model which expresses algorithms as functions, i.e. as stateless mappings of input values to output values

Declarative programming

programming paradigm that expresses a computation without describing its control flow

{List processing, e.g. LISP programming language}
Definition statement

This place covers:

List processing languages, e.g. Lisp and Scheme.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

CAR

Function that determines the first element of a list

CDR

Function that determines the list after its first element

{Logic programming, e.g. PROLOG programming language}
Definition statement

This place covers:

Programming languages expressing a program as a collection of logical statements.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Declarative programming

programming paradigm that expresses a computation without describing its control flow

Horn clause

logical statement

{Unification or backtracking}
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Unification

finding an assignment that satisfies all clauses

Backtracking

done on partial unifications that cannot succeed, and to continue to find more possible unifications

{Parallel programming languages (G06F 8/313 takes precedence)}
Definition statement

This place covers:

Programming languages having constructs for expressing parallelism, e.g. Occam.

References
Limiting references

This place does not cover:

Parallel logic programming

Detecting and extracting parallelism from program code

{Object-oriented languages}
Definition statement

This place covers:

Programming languages expressing algorithms as interacting objects, where an object is an aggregation of data (attributes) and actions (methods).

Examples of object oriented languages are Smalltalk, Ruby, Eiffel, C++, C#, Java, Oberon, Modula.

References
Limiting references

This place does not cover:

Object-oriented design paradigms

Object-oriented systems

Method invocation

Distributed object-oriented systems

Object-oriented databases

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Method

the action to be performed on (attributes of) an object

{Aspect-oriented programming techniques}
Definition statement

This place covers:

Programming paradigm allowing different, orthogonal, aspects of a program (business rules, security, fault tolerance, data consistency) to be designed independently and to be merged later to produce a final source code product.

Aspect-Oriented Software Development foresees a full and independent design for all the secondary aspects of an application like security, persistency, synchronization, logging, etc., carried out at the same time as the design of the core functionality of the application.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Aspect Weaving

the process of merging the different aspects

Join Points

the actual places in the program where the aspects are merged

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

AOSD

Aspect oriented software development

Intelligent editors
Definition statement

This place covers:

Intelligent editors that help a programmer to write programs, e.g. language-sensitive editors.

Examples:

  • Proposing a closing bracket when an opening bracket is typed.
  • Indenting of if-then-else statements.
  • Verification of entered text (e.g. whether variables are already declared).
References
Limiting references

This place does not cover:

Text processing

Graphical or visual programming
Definition statement

This place covers:

A programming technique whereby a program is created by handling graphical programming objects representing programming constructs/statements rather than writing program text.

References
Limiting references

This place does not cover:

Use of icons for interaction

Intelligent editors

Development of GUIs, User Interface Management Systems (UIMS)

Web page development

Informative references

Attention is drawn to the following places, which may be of interest for search:

Creating programs for controlling physical processes by graphically specifying the process to be controlled

Creating relay ladder logic program for Programmable Logic controllers (PLC)

Multimedia authoring

Model driven
Definition statement

This place covers:

Automatically generating program code (source code) from a specification/definition/model of what the program should do.

Typical examples: WO0108007, WO02086704, EP0737918, WO0177882.

Specific topics included:

  • Generating a debugger from a formal specification: EP1071016;
  • Generation of source code for web applications: WO0171566;
  • Convert spreadsheet data into source code: US2003106040, US2004064470;
  • Generate source code from XML: US2003167444;
  • Generate a shader program from a graphics file: US2003179220;
  • OMG's Model driven architecture (MDA).
Synonyms and Keywords

In patent documents, the following abbreviations are often used:

MDSD

Model driven software development

MDA

Model driven architecture

{Round-trip engineering}
Definition statement

This place covers:

Arrangement for keeping a model and the corresponding program code in sync when applying changes to any of them.

Software reuse
Definition statement

This place covers:

  • Storing and retrieving reusable software modules into and from software repositories;
  • Building, searching and maintaining software repositories containing reusable software parts;
  • Managing repositories of software components, objects;
  • Storing software components into a repository, thereby indicating additional information about the components, e.g. the function performed, what inputs are required, what outputs are generated;
  • Querying the repository to retrieve components that satisfy the particular requirements, e.g. related to its function;
  • Detecting program parts that are candidates for reuse;
  • Design patterns.
References
Limiting references

This place does not cover:

Exlining, i.e. finding similar sequences of code to replace them with a procedure invocation

Version control using repositories

Code clone detection, i.e. detection of identical pieces of code for the purpose of maintenance

Informative references

Attention is drawn to the following places, which may be of interest for search:

Plagiarism detection in program code

{Compiler construction; Parser generation}
Definition statement

This place covers:

Automatically generating a compiler or parser based on a specification of a grammar/syntax, e.g. Lex and Yacc.

Also includes generation of lexical analyzers see XP000095042.

References
Limiting references

This place does not cover:

Compilation per se

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Compiler Bootstrapping

creating a compiler using the language it is intended to compile

for implementing user interfaces
Definition statement

This place covers:

Development and generation of user interfaces, in particular GUI.

References
Limiting references

This place does not cover:

All other aspects relating to user interaction with graphical user interfaces

Details relating to the actual functioning of (graphical) user interfaces

Transformation of program code
Definition statement

This place covers:

The transformation of program code from one form into another.

The direct subclasses of G06F 8/40 cover all possible combinations involving source code and binary code.

media32.png

References
Limiting references

This place does not cover:

Transformation of XML code into markup languages

Compilation
Definition statement

This place covers:

The process of converting program code, written in a high level programming language, into binary code.

Conceptually, a general compiler consists of three main parts:

  • Front end - checks whether the program is correctly written in terms of the programming language syntax and semantics. The output of this part is an intermediate representation of the source code being further processed by the middle-end;
  • Middle part - optimizes the intermediate representation and generates another intermediate representation for processing by the back-end;
  • Back end - translates the intermediate representation from the middle-part into an assembly code.
References
Limiting references

This place does not cover:

Compiler generators

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Binary code

a representation of a code understood by a machine

{Syntactic analysis}
Definition statement

This place covers:

Determining grammatical structure of the source code with respect to a given formal grammar.

{Preprocessors}
Definition statement

This place covers:

Processing language-external elements, e.g. compiler directives, macro definitions and macro expansions, and inclusion of library source files.

{Lexical analysis}
Definition statement

This place covers:

Converting sequences of characters into tokens, skipping comments.

{Parsing}
Definition statement

This place covers:

Checking for correct syntax and building a data structure, e.g. parse tree.

Multibox parsers.

References
Limiting references

This place does not cover:

Parser generators

Parsing of XML code

{Checking; Contextual analysis}
Definition statement

This place covers:

Checking context-senstive conditions, e.g. whether variables have been declared.

{Dependency analysis; Data or control flow analysis}
Definition statement

This place covers:

Determining the dependencies between different program parts (e.g. data dependencies, which variables/values are used in expressions, and control dependencies, which statements have influence on other statements), in particular to determine whether such program parts should be placed in a certain order.

{Pointers; Aliasing}
Definition statement

This place covers:

Determining whether references, e.g. pointers, reference variables and indexed array elements, actually refer to the same underlying memory element.

{Semantic checking}
Definition statement

This place covers:

Checking semantic conditions which can be determined without actual execution of the program, e.g. whether variables are initialized.

{Type checking}
Definition statement

This place covers:

Checking type compatibility of values, variables, parameters and expressions.

{Encoding}
Definition statement

This place covers:

Generating an executable implementation of the program for the target machine architecture, usually via an internal form that is independent of the source programming language and that is also independent of the target machine architecture.

{Register allocation; Assignment of physical memory space to logical memory space}
Definition statement

This place covers:

Assigning logical registers to variables, assigning physical register to logical registers, coalescing, spilling.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Coalescing

removing useless copy instructions from a program. This needs information about assigned registers and therefore it is commonly performed as a subtask of register allocation besides spilling and register assignment.

{Optimisation}
Definition statement

This place covers:

Optimisation of the program code; the program code can take any form e.g. source code, assembly code, machine code.

References
Limiting references

This place does not cover:

Code refactoring

Special rules of classification

Whenever an optimisation concerns speed, size, etc, such documents should be classified in the corresponding subgroups. In this group should be classified only special optimision techniques not present in any of the subgroups.

Contains optimizations that do not involve a trade off between different factors (speed, size, energy consumption

Involve a trade-off. They are specifically aimed to optimize one aspect, likely at the cost of another aspect.

{Reducing the energy consumption}
Definition statement

This place covers:

Optimisation methods specifically aimed at reducing the energy consumption of program code.

References
Limiting references

This place does not cover:

Means for Saving Power, Power Management strategies

{Reducing the memory space required by the program code}
Definition statement

This place covers:

Optimisation methods specifically aimed at reducing the size of the program code, e.g. by replacing sequences of recurring instructions with a new macro instruction/superinstruction. Requires that the target architecture/virtual machine recognize this new instruction; Cross jumping; Tail Merging.

References
Limiting references

This place does not cover:

Data compression (e.g. PKZIP)

Special rules of classification

Note that this class does not deal with compression of program code, which requires a decompression before it can be executed. Compression of program code in this sense does not result in the actual program being smaller; there is only a saving in the secondary storage or transmission via the network.

In contrast, the size-reduced code resulting from the this class is directly executable, so no decompression is needed before execution.

{Detection or removal of dead or redundant code}
Definition statement

This place covers:

Detecting and removing of dead or redundant code. Redundancy elimination optimizations avoid repeated computation of the same value by computing the value once, saving it in a temporary variable, and reusing the value from the temporary variable when it is needed again. Examples of redundancy elimination optimizations include common subexpression elimination, loop invariant code motion and partial redundancy elimination.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Dead code

code that is never executed or that is unreachable.

Redundant code

code that produces results that are never used or are irrelevant to the program execution or code that computes values that were already computed before.

{Exlining; Procedural abstraction}
Definition statement

This place covers:

Detecting recurring sequences of instructions and replacing each of them with a call to a procedure/function that contains those instructions.

References
Limiting references

This place does not cover:

Reuse, i.e. identifying recurring pieces of code for purposes of reuse

Inlining

Code clone detection, i.e. detection of identical pieces of code for the purpose of maintenance

Plagiarism detection in a source code

{Reducing the execution time required by the program code}
Definition statement

This place covers:

Optimisation methods specifically aimed at improving the execution speed of the program.

{Reducing the number of cache misses; Data prefetching (cache prefetching G06F 12/0862)}
Definition statement

This place covers:

Avoiding cache misses at run-time. Cache can be instruction or data cache.

Splitting a program into frequently used and not frequently used parts (hot and cold parts) and keeping the hot parts in the cache.

Rearranging the individual instructions in order to have data/instructions present in the cache when they are needed.

References
Limiting references

This place does not cover:

Cache prefetching

{Inlining}
Definition statement

This place covers:

Replacing a procedure invocation with the instructions of the procedure, thus removing the cost of procedure invocation.

References
Limiting references

This place does not cover:

Exlining

{Exploiting fine grain parallelism, i.e. parallelism at instruction level (run-time instruction scheduling G06F 9/3836)}
Definition statement

This place covers:

Increasing the Instruction Level Parallelism (ILP) that can be exploited by the hardware at run-time (pipelines, superscalar processors executing multiple instruction streams). Typically this is done by reordering the instructions (scheduling).

References
Limiting references

This place does not cover:

Exploiting coarse grain parallelism

Run-time scheduling or reordering of instructions by the hardware

Process scheduling

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Scheduling

reordering of instructions

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

ILP

Instruction Level Parallelism

{Avoiding pipeline stalls}
Definition statement

This place covers:

Reducing or avoiding run-time pipeline stalls.

Pipeline stalls (or bubbles) are caused by control hazards – e.g. branches -, data hazards -one instruction depends on the result of another instruction and must wait for this instruction to finish- or resource hazards -there are not enough resources to serve all the instructions currently in flight - instructions must wait for resources to be freed in order to be fed to the pipeline.Control Hazards can handled by static branch-prediction, speculative execution or delayed branch. Data Hazards can be avoided by rearranging the instructions so that instructions that depend on each other's result are farther separated.

In a pipeline, there is only one instruction stream. So the parallelism consists in the overlapping of the instructions of the stream rather than executing the instructions of 2 streams simultaneously.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Hardware aspects of pipelining

{Software pipelining}
Definition statement

This place covers:

Software pipelining, e.g. Modulo Scheduling, transforms a loop described in a high-level programming language, such as C or FORTRAN, in such a way that the execution of successive iterations of the loop are overlapped rather than sequential. This technique exposes the instruction level parallelism (ILP) available between successive loop iterations to the compiler and to the processor executing the transformed code.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Hardware aspects of pipelining

{Target code generation}
Definition statement

This place covers:

Generation of executable code from the optimized compiler-internal representation of the source code, taking the target machine architecture into account.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Run-time compounding of instructions by the hardware

{Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions}
Definition statement

This place covers:

Speeding up the execution of a single task by subdividing the task into a plurality of subtasks and having the subtasks executed simultaneously on different processors. The subtasks are interdependent and they work together to achieve the same goal as the original task.

References
Limiting references

This place does not cover:

Exploiting fine grain parallelism

{Code distribution (considering CPU load at run-time G06F 9/505; load rebalancing G06F 9/5083)}
Definition statement

This place covers:

Distributing the code of each of the subtasks to the available processors.

References
Limiting references

This place does not cover:

Considering CPU load at run-time

Load rebalancing

{Loops}
Definition statement

This place covers:

Distributing iterations of parallelizable loops among the processors.

References
Limiting references

This place does not cover:

Software pipelining

Allocation of resources to service a request

Techniques for rebalancing the load in a distributed system at run-time

{Data distribution}
Definition statement

This place covers:

Dividing the data used by the subtasks over the different processors.

{Consistency (cache consistency protocols in hierarchically structured memory systems G06F 12/0815)}
Definition statement

This place covers:

Ensuring data consistency between subtasks.

References
Limiting references

This place does not cover:

Cache consistency protocols in hierarchically structured memory systems

{Parallelism detection}
Definition statement

This place covers:

Detecting parallelism in sequential programs, e.g. by making use of control flow and data flow information.

In this class the burden to detect and extract parallelism is put on the compiler or another software tool. This contrasts with the G06F 8/314, where the burden of indicating parallelism is put on the programmer.

References
Limiting references

This place does not cover:

Techniques and language constructs to create parallel programs

Data flow analysis, control flow analysis

{Communication (intertask communication G06F 9/54)}
Definition statement

This place covers:

Communication between subtasks, allowing the generated tasks to interact with each other, for example to pass parameters or to return results.

References
Limiting references

This place does not cover:

Communication between independent tasks

{Synchronisation, e.g. post-wait, barriers, locks (synchronisation among tasks G06F 9/52)}
Definition statement

This place covers:

Synchronisation between subtasks.

References
Limiting references

This place does not cover:

Synchronisation between independent tasks

{Retargetable compilers}
Definition statement

This place covers:

Compiler structure allowing for several source languages (multiple front ends) and/or several target machine architectures (multiple back ends). Some examples of techniques and compilers for this are:

  • Architecture Neutral Data Format (ANDF);
  • UCSD Pascal P-code;
  • Universal Compiler Language (UNCOL);
  • GCC - GNU Compiler Collection.
References
Limiting references

This place does not cover:

Generating code for just one computing platform

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Retargetable compiler

a compiler that can relatively easily be modified to generate code for different CPU architectures.

{Incremental compilation (software reuse G06F 8/36)}
Definition statement

This place covers:

Recompiling only those parts of source code that are affected by a modification.

References
Limiting references

This place does not cover:

Software reuse

{Partial evaluation}
Definition statement

This place covers:

Specializing a program for some or all of its possible input values.

Different flavours are:

  • "normal" PE (partial evaluation): specialize program for certain values of its inputs
  • "predictive" PE: predict the run-time values of some inputs and specialize the program accordingly. At run-time, check if the prediction was correct. If yes, execute it. If no, recompile using the actual values.
  • "multi-version" PE: generate multiple specialized versions of the program corresponding to different inputs. At run-time choose the appropriate version.
  • "placeholder" PE: specialize the program for the known inputs. For the unknown inputs, provide placeholders, that will be filled in at run-time.
References
Limiting references

This place does not cover:

Optimizing a method invocation based on the type of the receiving object

Source to source
Definition statement

This place covers:

Translating program code from a first high level programming language to a different second high-level programming language (e.g. from Java to C++). This transformation is independent of the target processor.

References
Limiting references

This place does not cover:

Source to binary translation

Preprocessors

Optimisation of source code

Binary to binary translation

Porting; modifying the source code of the application in order to adapt it to new / changed requirements

Porting source code to a different environment

Binary to binary
Definition statement

This place covers:

Static translation (i.e. pre-run-time) of binary code from one architecture to a different architecture.

The class deals with the following forms of static binary code translation:

Binary to binary

Intermediate bytecode to another intermediate bytecode (e.g. Java bytecode, p-code)

References
Limiting references

This place does not cover:

Source to source translation

Binary to source translation

Decompilation; Disassembly
Definition statement

This place covers:

Transformation of executable code into source code or assembly code.

Relationships with other classification places

media23.jpg

References
Limiting references

This place does not cover:

Reverse engineering

Informative references

Attention is drawn to the following places, which may be of interest for search:

Protecting software against software analysis or reverse engineering, e.g. by code obfuscation

Link editing before load time
Definition statement

This place covers:

Statically linking modules before load-time in order to create executable binary code.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Dynamic linking, i.e. linking at or after load time, during run-time

Software deployment
Definition statement

This place covers:

Installation and updating of computer software.

This group includes methods that make the installation/update of software program transparent, automatic and user-friendly, both to the end-user and the network administrator. It responds to the need, when installing/updating software, to automate the process of deciding which programs have to be updated, when this must happen, with what they must be updated, where old and new programs are located, this doing away with the need for both user/network manager to make those decisions "manually".

Includes:

updating or installing software based on physical location of the target device (US2007/0226343, US2010/0169200, US2006/0101449, US7206828, US2005/0222918).

References
Limiting references

This place does not cover:

Installation or update in a fault tolerant manner

Installation or update in a secure manner

Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

Software downloading in telecom switches

Informative references

Attention is drawn to the following places, which may be of interest for search:

Installation and upgrade of device drivers

Network booting

Fault tolerant update or installation. For example when an error occurs during software upgrade, the system is rebooted and restored to the state before installation.

Medical devices, equipment management, e.g. update, maintenance

Secure installation and upgrading; licensing; Try and buy software

Arrangements in connection with the implantation of stimulators; Changing the program; Upgrading firmware

Downloading information (also software) into vehicles

Personalization of smart card applications

Download/install/upgrade software in mobile communication devices

Multimedia set-top boxes under program control

Updating, downloading of parameters to a mobile device

H04Q7/321

Updating of system parameters into mobile communication devices

H04Q7/321

Special rules of classification

Installation/update wizards that assist a user in installing/updating software, are also classified in G06F 9/453 (Help systems).

Installation
Definition statement

This place covers:

First-time installation of software.

Unattended installation, installation scripts (answer file)

Network installation.

Installation packages (containing list of files, program image, files itself, install/update instructions).

Network installation plans.

Type of installations.

Silent installation - no display of the progress of the installation

Unattended installation - installation performed without user interaction

Self installation - unattended installation without the need of initial launch of the process.

Headless installation - installation performed without using a monitor connected to the destination computer.

Clean installation - cleaning up a destination partition (formatting) before actual installation.

Flat installation - first copying installation files from a media to a hard disk and then installing them from the hard drive.

Network installation - installation of a program from a shared network drive

Virtual installation - performing a virtual installation to check for errors before committing the real installation.

References
Limiting references

This place does not cover:

Network booting

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Installation

setup, deployment

{Uninstallation}
Definition statement

This place covers:

Removing software and all its related components.

Uninstallation of software i.e. removing software and all its related components, without interfering with the operation of other software;

Undoing installations/update.

Rollback, reverting to a previous installation/update status. Requires the use of some kind of log file.

References
Limiting references

This place does not cover:

Unloading program code from executable memory

Garbage collection

{Image based installation; Cloning; Build to order}
Definition statement

This place covers:

Installation of whole systems by copying disk images to target systems,

Cloning installed systems.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Software billing

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

BTO

Build to order

MTO

Make to order

{Retargetable}
Definition statement

This place covers:

Installation or update explicitly taking into account hardware characteristics of the target.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Retargetable compilation

Retargetable program loading

Updates (security arrangements therefor G06F 21/57)
Definition statement

This place covers:

Updating of existing software, i.e. modifying already installed software to a desired version.

Being informed of new software that has become available in order to update including installation for the update.

Synchronization of software of disconnectable devices after their reconnection to the network automatically upgrading software to the correct version.

Transparent update (e.g. after boot, after update becomes available, regular check for updates,…)

User-initiated update.

References
Limiting references

This place does not cover:

Synchronizing caches

Replication of documents/files

Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

For set top boxes

{of program code stored in read-only memory [ROM]}
Definition statement

This place covers:

Updating software that is stored in non-alterable ROM.

Software maintenance or management
Definition statement

This place covers:

Adapting the source code of a software program in response to changing requirements, changing specifications, changes to the environment, detection of bugs, etc.

Starting from a specification of the new / modified functionalities the application should offer, analysing the existing source code in order to find the points to edit, generating the code from these specifications and incorporating it into the application.

References
Limiting references

This place does not cover:

Drafting of the specifications per-se

(Run-time) updating of already installed software

Special rules of classification

Drafting of the specifications per-se; if the focus is on that, or it is a relevant aspect of the document, then the G06F 8/10 should be (also) appropriate

Generation of code per-se; if the focus is on that, or it is a relevant aspect of the document, then one of the G06F 8/30 should be (also) appropriate.

Version control (security arrangements therefor G06F 21/57); Configuration management
Definition statement

This place covers:

Version control, administering version numbers and releases. Deals with the problem of managing a modular software system: keeping track of the changes and the different version of the modules, the interrelation between the modules, the effects of the changes of one module on the other modules, the problem of multiple users editing different modules.

Includes:

  • Make, Build
  • Analysing changes to/conflicts between sources
  • SCCS-like tools
  • dependency analysis
  • Comparing/obtaining dates of last changes of sources/intermediates/targets;
  • CVS - Concurrent Version Control, SVN, GIT, ...
References
Limiting references

This place does not cover:

Dependency analysis in compilers

Dealing with different versions of software in the context of software updating

Configuration of peripheral devices

Configuration in the sense of changing parameters

Version control for text documents

Code refactoring
Definition statement

This place covers:

Applying any change to a computer program's code which improves its readability or simplifies its structure without changing its results. In software engineering, "refactoring" a source code module often means modifying the module without changing its external behavior, and is sometimes informally referred to as "cleaning it up".

Code refactoring can be considered the design-time equivalent of code optimization (G06F 8/443). Code refactoring is concerned with improving the structure of the code in view of easier maintenance whereas code optimization is concerned to make the code better for a particular aspect (speed, size, energy).

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Code Refactoring

the process of changing software such that the changes do not alter the external behavior of the code, yet improve the internal code structure

Re-engineering

In contrast to reverse engineering

Program documentation
Definition statement

This place covers:

Augmenting program code with additional information in order to increase its understandability in view of easier maintenance.

Documenting program code, inserting comments in source code.

Reverse engineering; Extracting design information from source code
Definition statement

This place covers:

Reverse engineering of HLL source code to its underlying design, model.

References
Limiting references

This place does not cover:

When the reverse engineering is performed in the context of binary to binary translation

Decompilation and dissassembly

Informative references

Attention is drawn to the following places, which may be of interest for search:

Protecting software against software analysis or reverse engineering, e.g. by code obfuscation

Structural analysis for program understanding
Definition statement

This place covers:

Static analysis of the structure of program code.

References
Limiting references

This place does not cover:

Analysing program code in order to identify reusable program parts

Monitoring program code execution

{Code clone detection}
Definition statement

This place covers:

Detecting code clones, e.g. introduced as a result of copy & paste by the programmer.

References
Limiting references

This place does not cover:

Reuse, i.e. identifying recurring pieces of code for purposes of reuse

Exlining, i.e. finding similar sequences of code to replace them with a procedure invocation

Informative references

Attention is drawn to the following places, which may be of interest for search:

Plagiarism detection for source code

Adapting program code to run in a different environment; Porting
Definition statement

This place covers:

Adapting program code to run in a different environment, i.e. a different architecture or operating system.

Software metrics
Definition statement

This place covers:

Measurement of software metrics related to a software development project, such as product metrics and process metrics.

References
Limiting references

This place does not cover:

Measuring certain characteristics of a program in view of debugging

Special rules of classification

Not to be confused with G06F 11/362 , which deals with measuring certain characteristics of a program in view of debugging.

{Methods to solve the "Year 2000" [Y2K] problem}
Definition statement

This place covers:

The Year 2000 problem, i.e. adapting software so as to comply with a not-foreseen date format.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

Y2K

Year 2000

Arrangements for program control, e.g. control units (program control for peripheral devices G06F 13/10)
Definition statement

This place covers:

Program control for general purpose computers.

Runtime execution of programs.

References
Limiting references

This place does not cover:

Arrangements for development of programs; Software engineering

Informative references

Attention is drawn to the following places, which may be of interest for search:

Program control for peripheral devices

Program control in regulating or control systems

Special rules of classification

Note for use of these definitions:

In the sub-groups of G06F 9/00 there are rules of classification which differ from the rules of the IPC, and are specified in this section.

The sub-groups mentioned under "Informative references"; "Limiting references" and "Relationship between large subject matter areas" are to be taken as indicators as to where the document to be classified may be forwarded or circulated for classifiying.

Specific combinations or conventions of classification are mentioned under "Special rules of classification".

using wired connections, e.g. plugboards
Special rules of classification

Not currently used, as old technology.

using record carriers containing only program instructions (G06F 9/06 takes precedence)
Special rules of classification

Not currently used, as old technology.

using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
Definition statement

This place covers:

Programming arrangements for computers having a stored program. Covers execution of stored programs, and arrangements therefor.

References
Limiting references

This place does not cover:

Arrangements for development of programs; Software engineering

Informative references

Attention is drawn to the following places, which may be of interest for search:

Program control for machine tools using a digital processor

Microcontrol or microprogram arrangements
Definition statement

This place covers:

Arrangements for executing microcode in general.

A next instruction of the program, when fetched from program store, is translated into lower level microinstructions, usually by using the instruction to index into a microprogram or control memory to fetch a series of microinstructions which are then decoded to obtain control signals to carry out the function of the machine instruction.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Execution of machine instructions

Special rules of classification

Precedence and classification rules:

The classification rules for sub-groups G06F 9/22 - G06F 9/28 is different from those used in G06F/30 and sub-groups.

All aspects disclosed in a document which are deemed useful for search receive a class, not just the subject matter of the invention. Hence multiple sub-groups are to be used.

There is no distinction made between invention and additional subject matter, and the classes for additional subject matter are not used.

Within a sub-group of the hierarchy, lower level sub-groups have preference, unless otherwise specified. A single lower level class is given if appropriate. A higher level class is given for documents having features belonging to multiple sub-groups.

A higher level sub-group is used for an aspect not covered by its lower level sub-groups, and thus acts as a residual group for these sub-groups.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Microprogram

internal set of instructions used to translate a machine instruction of the stored program into a series of control signals. The microprogram is usually fixed at runtime, and defines the operations of the processor. Changing the microprogram changes the functionality of the processor, i.e. what type of operations it can carry out, and how these are carried out.

Nanoinstructions

instructions of a level lower than microinstructions i.e. multiple nanoinstructions are used to execute a microinstruction.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "microprogram", "microcode", "firmware" and "microinstructions"
{Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems}
Definition statement

This place covers:

Microinstruction execution aspects independent of the type of microinstruction, e.g. decoding of microinstructions; timing.

Includes PLAs used as sequencers for microcode.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "PLA" and "Programmable Logic Array"
{Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format}
Definition statement

This place covers:

Specific types of microinstruction operations.

Microinstruction set, microinstruction format.

Loading of the microprogram
Definition statement

This place covers:

  • Loading of microcode implying altering the processor functionality;
  • Changing the processor operations by loading or modifying microcode in the control store, thereby altering the way in which instructions are implemented in microcode;
  • Fetching control microcode from ROM into RAM for execution;
  • Patching by loading new microcode. Usually implemented by substituting the microcode at a particular instruction address in the microstore by a correct version during instruction fetching.
Relationships with other classification places

Loading of operating system or application programs; loading of new versions of software G06F 9/445.

Address formation of the next micro-instruction (G06F 9/28 takes precedence){; Microprogram storage or retrieval arrangements}
Definition statement

This place covers:

  • microinstruction addressing arrangements;
  • sequencers for microcode;
  • microinstruction storage, and microinstruction retrieval or fetching.
Special rules of classification

G06F 9/28 takes preference.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "microinstruction" and "microinstruction" or "microprogram" and "microprogram"
{Microinstruction address formation}
Definition statement

This place covers:

Formation of the microinstruction address e.g. using lookup table.

{Arrangements for next microinstruction selection}
Definition statement

This place covers:

Retrieval of the next microinstruction

{Microinstruction selection based on results of processing}
Definition statement

This place covers:

Address formation of the next microinstruction by selection according to the results of processing.

Next microaddress or microinstruction derived directly from the program flow, e.g. program counter, branch.

{by address selection on input of storage}
Definition statement

This place covers:

Address formation of the next microinstruction by selection of address on input of storage.

Selecting at the input to the control store, which address to use, and therefore which microinstruction is retrieved.

{by instruction selection on output of storage}
Definition statement

This place covers:

Address formation of the next microinstruction by selection of microinstruction on output of storage.

Inputting several addresses into the control store, and selecting at the output of the control store which microinstruction to execute.

{Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs}
Definition statement

This place covers:

Address formation of the next microinstruction by selection not based on the results of processing.

Selecting next microaddress or microinstruction not derived directly from the program flow, e.g. interrupt, patching.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Patching by microcode loading

Address formation of the next machine instruction for runtime patching

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Patching

repairing errors of microcode in read-only storage. Usually implemented by substituting the microcode at a particular address in the microstore by a correct version during fetching.

Interrupt

changing execution flow in response to an (external) event which must be handled with a higher priority.

Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
Definition statement

This place covers:

Means to improve speed of microcode execution e.g. dual control stores.

Parallel or concurrent execution of microinstructions.

Special rules of classification

Takes precedence over other sub-groups of G06F 9/22.

Arrangements for executing machine instructions, e.g. instruction decode (for executing microinstructions G06F 9/22)
Relationships with other classification places
  • Arrangements for executing microinstructions G06F 9/22;
  • arrangements for executing subprograms G06F9/40;
  • arrangements for executing specific programs G06F 9/44;
  • arrangements for executing multiple programs G06F 9/46;
  • arrangements for development of stored programs; Software engineering; CASE tools G06F 8/00.
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Arrangements for executing microinstructions

Arrangements for executing subprograms

G06F9/40

Special rules of classification

These rules of classification apply to the subclass G06F 9/30 and all lower level subclasses:

Sub-groups mentioned under the heading of "Relationship..." and limiting references are to be used for circulation of documents during classification.

All aspects disclosed in a document which are deemed useful for search receive a subclass, not just the subject matter of the invention. Hence multiple subclasses are to be used.

There is no distinction made between invention and additional subject matter, and the subgroups for additional subject matter are not used.

Note that combinations of subclasses are possible from different levels, or from the same level within the hierarchy.

Within a subclass of the hierarchy, lower level subclasses have preference, unless otherwise specified. Documents may be classified in multiple lower level subclasses. A higher level subclass is used for an aspect not covered by its lower level subclasses, and thus acts as a residual group for these subclasses.

The following IPC subclasses are not used in this classification scheme, but are covered by the subgroups listed here:

G06F9/302 covered by G06F 9/3001;

G06F9/305 covered by G06F 9/30029;

G06F9/308 covered by G06F 9/30018;

G06F9/312 covered by G06F 9/30043;

G06F9/315 covered by G06F 9/30032;

G06F9/318 covered by G06F 9/30181.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Machine instructions

Executable instructions of the processor, which can be decoded to obtain control signals

{Arrangements for executing specific machine instructions}
Definition statement

This place covers:

Execution of specific individual machine instructions.

Adaptation of hardware, and hardware control, to carry out the execution of a specific machine instruction.

Special purpose instructions, being instructions not classifiable under subclasses.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Multiple parallel functional units executing instructions

Special rules of classification

In the subclasses of G06F 9/30003, if the execution of the machine instruction includes special arrangements for the setting of a condition code or flag, then also use G06F 9/30094.

In the case of a single machine instruction which carries out a combination of operations, use a subclass for each operation.

In the subclasses hereof, the terms in capitals which are used as examples, refer to well-known types of instructions characteristic to that subclass.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Machine instructions

instructions executable by the processor, which can be decoded to obtain control signals

{to perform operations on data operands}
Definition statement

This place covers:

Specific instruction to perform operation between input data operands, usually returning an output data operand as the result.

Relationships with other classification places

Adders G06F 7/50

Multipliers G06F 7/52

Arithmetic Logic Units G06F 7/57

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific instruction for operation on memory operands

{Arithmetic instructions}
Definition statement

This place covers:

Specific arithmetic instruction for example adding, multiplying, multiply accumulate.

Includes how to select the specific operation to execute in an ALU.

Relationships with other classification places

Adders G06F 7/50.

Multipliers G06F 7/52.

Arithmetic Logic Units G06F 7/57.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

ALU

Arithmetic Logic Unit

MAC

Multiply-Accumulate operation

MACU

Multiply-Accumulate Unit

{with variable precision}
Definition statement

This place covers:

Arithmetic operation where the bit width operated on may be variable.

Bit-sliced arithmetic operation.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Multiple arithmetic units executing an instruction in tandem or cascaded

{Bit or string instructions; instructions using a mask}
Definition statement

This place covers:

Specific instruction for operation on a series of connected bits, bytes or characters, for example using a mask to select certain portions of a data string.

Examples include the EDIT instruction which alters a portion of a character string, or a Find-First-One instruction which detects the position of the first '1' in a string of bits.

Includes cyclic redundancy check instructions.

{Compare instructions, e.g. Greater-Than, Equal-To, MINMAX}
Definition statement

This place covers:

Specific instruction for comparison between two operands.

Includes matching, greater/less than, minmax instruction.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

MINMAX

instruction to find the minimum of a series of input operands, alternatively to find the maximum of the same.

{Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion}
Definition statement

This place covers:

Specific instruction for conversion from one data format to another.

Includes Endian conversion; Conversion between integer and floating-point; Decimal conversion instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Data re-arranging instruction, e.g. Shuffle, Permute

{Logical and Boolean instructions, e.g. XOR, NOT}
Definition statement

This place covers:

Specific instruction for logical operation or combination.

{Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE}
Definition statement

This place covers:

Specific instruction for moving, rearranging, or operating on data within a register.

Examples include : Move instruction which transfers data between registers; Permute instruction which changes the order of data in a register; Rotate or Shift instruction which moves bits or bytes within a register.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Instruction for operation on string operands

Instructions for format conversion operations

Instruction for operation on memory operands

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Move

instructions to pass data between memory locations, or between registers, without operating on the data.

Shift

instructions to move data in a serial fashion from one location to another, where the distance moved is usually less than a word, e.g. shifting data within a register by a few bits.

Rotate

instructions which are shift instructions where the bits shifted serially out are inserted into the location at the opposite end.

Permute or Shuffle

instruction which intermingles parts of a datum to produce a new datum.

{Instructions to perform operations on packed data, e.g. vector operations}
Definition statement

This place covers:

Specific instruction operating on multiple data stored in a single register, thereby effecting a SIMD operation.

Includes instructions operating on vector data.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Multiple functional units executing an instruction in parallel

Special rules of classification

This subclass may be used in combination with other subclasses of G06F 9/30007, according to the operation performed.

{to perform operations on memory}
Definition statement

This place covers:

Specific instruction for operation on memory operands in general.

Specific instruction for control operation on memory.

Memory to memory Move instruction.

Stack instructions POP, PUSH

Table lookup instructions.

A combination of a memory operation and further operation e.g. atomic memory operations such as read-modify-write, test-and-set.

Register allocation instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific instruction for data operation

Special rules of classification

For atomic memory operations use in combination with serialisation control instructions G06F 9/30087, and possibly G06F 9/3834 for memory consistency.

{LOAD or STORE instructions; Clear instruction}
Definition statement

This place covers:

Specific instruction to read or write data from a memory location, e.g. LOAD, STORE, Load Multiple.

Specific instruction to clear or reset a memory location, e.g. CLEAR.

Register reset or clear instructions are also found here.

Table look-up instructions.

Context saving or restoring instructions.

Special rules of classification

Register reset or clear instructions are also found here.

For atomic memory operation use also serialisation control operation G06F 9/30087.

For Load Multiple when executed as an iterative instruction use also G06F 9/30065.

{Prefetch instructions; cache control instructions}
Definition statement

This place covers:

Specific instruction for control data or instruction prefetching from memory, e.g. Hint instruction.

Specific instruction to control cache operation, e.g. Cache Flush.

{to perform operations for flow control}
Definition statement

This place covers:

  • Specific instruction to control program flow in general.
  • Execution of an instruction to select a next instruction other than the next sequential instruction, e.g. for branching.
  • Execution of an instruction for facilitating branching, e.g. Prepare-To-Branch instruction.

Includes specific instruction for monitoring or tracing program flow e.g. breakpoint instruction; flow signature instruction.

{Unconditional branch instructions}
Definition statement

This place covers:

Special adaptations to execute a specific instruction which branches to a target address independent of any condition.

Examples of unconditional branch instructions are CALL, GOTO insofar as these are unconditional.

Special rules of classification

Only to be used when there is subject matter relating to special adaptations or details of handling of a branch instruction.

{Conditional branch instructions}
Definition statement

This place covers:

Specific instruction which causes branching to a target address dependent on a runtime condition, else continues execution with the next sequential instruction.

Includes IF-THEN-ELSE constructions.

Special rules of classification

Only to be used when there is subject matter relating to special adaptations or details of handling of a branch instruction.

{Multi-way branch instructions, e.g. CASE}
Definition statement

This place covers:

Specific instruction which causes a branching to one of several alternative target addresses depending on a runtime condition.

Instruction which branches to a variable target address, e.g. indirect (register specified) branch target address,

{Loop control instructions; iterative instructions, e.g. LOOP, REPEAT}
Definition statement

This place covers:

Specific instruction used for loop control, e.g. specific loop start or end instructions.

Specific instruction which is repeatedly executed, thereby forming a (short) loop.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Address formation for loops, loop detection

Loop buffering

{Instruction skipping instructions, e.g. SKIP}
Definition statement

This place covers:

Specific instruction which causes a number of instructions to be skipped i.e. not executed, thus effecting a (short) forward branch, e.g. SKIP.

A skip of a single instruction is regarded as conditional instruction execution, not skipping.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Conditional branch instruction

Single instruction skip as conditional execution.

{to perform conditional operations, e.g. using guard}
Definition statement

This place covers:

Specific instruction for conditional operation depending on a runtime condition, which are not for control of program flow.

The operation carried out depends on a runtime condition, for example ADD or SUBTRACT depending on the value of the sign bit. Another example is a MOVE which is executed or not depending on a runtime condition.

Includes instructions which are executed conditional on a predicate or guard.

Includes conditional instructions in a branch shadow.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Conditional branch instruction

Multiple instruction skipping for forward branch.

Instruction which executes differently according to a mode

Special rules of classification

G06F 9/30058 has precedence.

May be used in combination with other sub-groups of the G06F 9/30003 according to the operation performed by the conditional instruction, e.g. conditional MOVE in combination with G06F 9/30032.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Conditional

dependent on a runtime condition or operational status.

Guard

a tag indicating a condition which is assigned to an instruction. According to the outcome of the condition evaluation, the instruction is executed or skipped. Often assigned by the compiler to avoid branches

Predicate

same meaning as 'guard'

{to perform miscellaneous control operations, e.g. NOP}
Definition statement

This place covers:

Specific instruction for operation control in general.

Includes mode switching instruction.

Specific instruction for instruction execution control in general.

Includes mode switching instruction.

NOP instructions are here, but multicycle NOPs are considered pipeline delay control instructions, and are in 30A8H.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific instruction for program flow control NOP used as a pipeline delay instruction

{Pipeline control instructions}
Definition statement

This place covers:

Specific instruction to control an instruction pipeline, e.g. HALT, FLUSH

Instructions for variable delay of pipeline or execution, e.g. multicycle NOP.

{Power or thermal control instructions}
Definition statement

This place covers:

Specific instruction to control power consumption or thermal aspects of the processor, e.g. SLEEP.

{Synchronisation or serialisation instructions}
Definition statement

This place covers:

Specific instruction to control serialisation of instruction execution; to control synchronisation of instruction execution.

Includes specific instructions used to implement memory locks; barriers. Includes instructions to facilitate atomic execution.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Program synchronisation ; Mutual exclusion

Special rules of classification

For atomic memory operations use also G06F 9/3004.

For barrier or fence instructions use also G06F 9/3834.

For synchronisation instruction which affects the execution of a thread use also G06F 9/3009.

{Thread control instructions}
Definition statement

This place covers:

Specific instruction to control multi-threading; starting and stopping threads, e.g. FORK; JOIN.

{Condition code generation, e.g. Carry, Zero flag}
Definition statement

This place covers:

Special arrangements for the generation or storage of runtime conditions, e.g. flags; status register.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Execution mode flags

{Register arrangements}
Definition statement

This place covers:

Groups of registers; register files.

Register file addressing; addressing partial registers.

Accessing register file e.g. contention.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Register address space extension

Register renaming

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Register

set of one-bit storages, e.g. latches, accessed in parallel

Register file

set of registers. May be implemented in a single or in multiple memories

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

GPR

general purpose register

{Special purpose registers}
Definition statement

This place covers:

Special adaptation of the use of single or multiple registers for a dedicated purpose, not being general purpose registers. May not be part of the register file.

Examples include particular use of dedicated address register, control register, status register, condition code register, Top Of Stack register.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Program counter registers

Special rules of classification

Only to be used when there is subject matter relating to special adaptations or details of use of a special purpose register.

{Register structure}
Definition statement

This place covers:

Details of the structure of an individual register.

Registers having associated bits e.g. valid bits, tags, flags.

{having multiple operands in a single register}
Definition statement

This place covers:

Registers which are logically partitioned into multiple operands, e.g. for packed data.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Multiple registers used for variable length operands

{for variable length data, e.g. single or double registers}
Definition statement

This place covers:

Register structure for variable length operands i.e. variable length data can be stored.

Use of partial registers for short data.

Combinations of registers for longer or higher precision data, e.g. by concatenation.

Accessing of variable length registers.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Partitioned registers for multiple operands, e.g. packed data

{Shadow registers, e.g. coupled registers, not forming part of the register space}
Definition statement

This place covers:

Registers which cannot be addressed by an instruction, and hence are invisible to the architecture.

Register with an associated copy, e.g. for saving of architectural state.

Special rules of classification

Use in combination with G06F 9/30123 for shadow register set used for another context.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Register space

the address space used by registers i.e. the range of program addressable register locations.

{Organisation of register space, e.g. banked or distributed register file}
Definition statement

This place covers:

The physical or logical organisation of the register space in general.

Includes partitioned, distributed or banked register files, e.g. per execution unit.

Local and global register files.

Special rules of classification

Register banks for register space extension use G06F 9/30138.

Register banks for context data use G06F 9/30123.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Register space

logical address space for registers, i.e. the range of addresses defined by a register specifier

{according to context, e.g. thread buffers}
Definition statement

This place covers:

Organisation of sets of registers used for storing the data of a particular context, e.g. local variables.

Includes thread buffers used to hold the context of a thread, and forming part of an instruction stream.

Special rules of classification

Use in combination with G06F 9/30116 for shadow register set used for another context.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Context data

operands and data representing the architectural state of a context, and which needs to be saved on a context switch

{Register windows}
Definition statement

This place covers:

Organisation of sets of registers used to implement register windows.

May have a pointer to the first window location, which may be used as a base address. Used for example for fast context switching, by moving from a current window to a next window.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Register window

set of contiguous registers used to implement a window to hold context data

{according to data content, e.g. floating-point registers, address registers}
Definition statement

This place covers:

Organisation of sets of registers used to store different types of data.

Includes address registers, Boolean registers, floating point registers, parameter registers.

{Register stacks; shift registers}
Definition statement

This place covers:

Register stacks are a series of register locations implementing a stack. The register stack is addressable generally using a register containing the Top-of Stack pointer. Writing to the TOS location implies adding an entry to the top of the stack, reading implies removing an entry from the top of the stack.

The implementation of stack read/write operation in a register stack may involve physically shifting the entries in the queue up or down using shift registers; or alternatively may involve incrementing or decrementing the TOS pointer to access the next or previous register.

Details of shift registers implementing a FIFO buffer are also found here.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Special purpose register for TOS pointer

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Register stack

contiguous set of register locations used to implement a stack. May be implemented as a shift register

Shift register

register which shifts its contents in a bit-parallel fashion into an adjacent register.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

TOS

Top of Stack

{Extension of register space, e.g. register cache}
Definition statement

This place covers:

Increasing or decreasing the number of available addressable locations in register address space, e.g. more or less physical registers than logical registers, register cache.

Extension of register address length e.g. using indexing.

{Implementation provisions of register files, e.g. ports}
Definition statement

This place covers:

  • Hardware implementation of register files.
  • Register file port architecture; address or data ports.
  • Internal bypass path of register files.
  • Adaptations of register file hardware for particular problems, e.g. for power saving; for fault tolerance.

Includes transposing register file being accessible vertically or horizontally.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Bypass path

direct connection between a register file input and output.

{Instruction analysis, e.g. decoding, instruction word fields}
Definition statement

This place covers:

Decoding of instructions in general, of opcode in particular.

Instruction format, instruction encoding.

Instruction set as a whole.

Relationships with other classification places

Decoding of microinstructions G06F 9/223.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Runtime instruction translation

Special rules of classification

Runtime instruction translation using a decoder is classified under G06F 9/3017 and sub-groups, even if this involves decoding, since the purpose is translation.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

RISC

Reduced Instruction Set Computer. Architecture having set of simple instructions which are decoded into direct control signals, and which take a single cycle to execute.

CISC

Complex Instruction Set Computer. Architecture having set of complex instructions which are decoded into internal (native; microcode) instructions, and which may take multiple cycles to execute.

{of variable length instructions}
Definition statement

This place covers:

Decoding of variable length instructions.

Includes instruction where the relative length of operation and operand part is variable.

Ensuring a whole instruction is decoded. Parsing VLI instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Instruction pre-fetching when instruction length is variable, e.g. line-crossing fetch; alignment in instruction buffer

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

VLI

instructions of varying lengths

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

VLI

Variable Length Instruction

{Determining start or end of instruction; determining instruction length}
Definition statement

This place covers:

Arrangements for determining and/or marking the boundaries of a variable length instruction; Special arrangements for determining the length of a variable length instruction other than by decoding the length.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Pre-decoding of instructions

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

VLI

instructions of varying lengths

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

VLI

Variable Length Instruction

{Special purpose encoding of instructions, e.g. Gray coding}
Definition statement

This place covers:

Instruction encodings to achieve a secondary effect, e.g. power saving, saving memory space, security, fault tolerance.

Relationships with other classification places

Computer-aided instruction set design G06F 17/50.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Runtime instruction translation for compressed or encrypted instructions

Special rules of classification

Use in combination with G06F 9/30178 for decompression by translation, or with G06F 9/3822 for format field decoding for VLIW.

{Decoding the operand specifier, e.g. specifier format}
Definition statement

This place covers:

Decoding operand fields of instructions; Format of operand fields of instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Decoding the opcode of instructions

{with implied specifier, e.g. top of stack}
Definition statement

This place covers:

Instruction format which is shorter by having operand specifier field(s) missing but implied, e.g. Top of Stack, accumulator, dedicated register.

{of immediate specifier, e.g. constants}
Definition statement

This place covers:

Decoding of immediate operand specifiers or constants; Concatenation of immediates; Buffering of immediates.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Immediate

data in an instruction to be used directly as an operand, e.g. without storing in a register

Constant

same meaning as 'immediate'

{Runtime instruction translation, e.g. macros}
Definition statement

This place covers:

Runtime translation of an instruction by decoding an instruction which is non-native, to produce an executable instruction or set of instructions. The decoding of instructions into microinstructions, being of a lower level, is not meant.

Includes altering the format or encoding of the input instruction, e.g. length of fields.

Includes translating a single instruction into multiple executable instructions, or the reverse (macro formation).

Relationships with other classification places
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Decoding of instructions

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Macro

An opcode which is an alias for a series of instructions, i.e. a function; Non-native instruction; An instruction which is not executable in the architecture of the processor.

{for non-native instruction set, e.g. Javabyte, legacy code}
Definition statement

This place covers:

Runtime translation of a non-native instruction into an executable instruction using hardware means, e.g. decoder, look-up table.

Relationships with other classification places

Instruction emulation or interpretation G06F 9/455.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Non-native instruction set

set of instructions intended to execute on a different architecture, which cannot run without translation or reformatting. Legacy code may be considered non-native.

Non-native instruction

an instruction which is not executable in the architecture of the processor.

{of compressed or encrypted instructions}
Definition statement

This place covers:

Runtime translation of an encrypted or compressed instruction into an instruction which can be executed.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Special encoding of instructions for saving memory or power.

{Instruction operation extension or modification}
Definition statement

This place covers:

Modification or extension of the execution of an instruction in general.

Modifications to the instruction itself, or to the architecture, which increase the number of operations available to the architecture.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Execution unit with adaptable datapath for complex operation

{according to one or more bits in the instruction, e.g. prefix, sub-opcode}
Definition statement

This place covers:

Modification of the operation of an instruction according to one or more bits comprised in the instruction.

{according to execution mode, e.g. mode flag}
Definition statement

This place covers:

Modification of the operation of an instruction according to a mode of operation, e.g. mode flag.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Mode switching instruction

{according to data descriptor, e.g. dynamic data typing}
Definition statement

This place covers:

Modification of the operation of an instruction according to a data type descriptor, e.g. dynamic data typing.

{using decoder, e.g. decoder per instruction set, adaptable or programmable decoders}
Definition statement

This place covers:

Modification of the operation of an instruction using more than one decoder, or a decoder which is adaptable.

Extension of the instruction set using multiple decoders for multiple instruction sets.

Address formation of the next instruction, e.g. by incrementing the instruction counter (G06F 9/38 takes precedence)
Definition statement

This place covers:

Selecting or calculating the next instruction address.

Sequencers for machine instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Concurrent instruction execution, e.g. pipeline, look ahead

Instruction prefetching

Dynamic branch address prediction

Static branch address prediction

Subprogram jump

{Program or instruction counter, e.g. incrementing}
Definition statement

This place covers:

Incrementing/decrementing means for the program counter.

Selection of next PC from pre-calculated constant values, e.g. +1, +2, 0, -1.

PC arrangements, e.g. multiple PCs.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Program counter

a dedicated register which holds the address of the current instruction in the program sequence

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

PC

Program counter

{for non-sequential address}
Definition statement

This place covers:

Address formation, or selection, for the next instruction, being a non-sequential address.

Address calculation or selection, for the execution of branch instructions in general, e.g. for multiple types of branch.

Selection of next instruction address from various alternatives, e.g. PC, a constant, branch target, branch fall-through.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

PC address formation

address calculation, i.e. address selection

{using program counter relative addressing}
Definition statement

This place covers:

Formation of the next instruction address using an offset from the program counter.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Address formation of the instruction operand or result using PC-relative addressing

{for loops, e.g. loop detection, loop counter}
Definition statement

This place covers:

Formation of the next instruction address for a loop.

Loop formation; loop detection.

Loop counters.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific loop control instructions or iterative instructions

Buffering of loop instructions

{for interrupts}
Definition statement

This place covers:

Formation of the next instruction address for an interrupt, using hardware means e.g. look-up table.

{for runtime instruction patching}
Definition statement

This place covers:

Formation of the address of a next instruction for the purpose of patching an instruction.

Includes detection of program addresses or instructions to be patched.

Relationships with other classification places

Patching of software or loading of new version of software G06F 9/445.

Instruction emulation G06F 9/455.

Runtime patching of microcode in ROM G06F 9/268.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Patching

repairing errors in machine instructions in read-only storage at runtime. Usually implemented by substituting the instruction at a particular address in the memory by a correct version.

Addressing or accessing the instruction operand or the result {; Formation of operand address; Addressing modes (address translation G06F 12/00)}
Definition statement

This place covers:

  • Addressing the instruction operand or the result.
  • Operand addressing modes in general.
  • Endian conversion.
Relationships with other classification places

Addressing of memories in general, address translation G06F 12/00.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Accessing an operand in a pipeline

Address translation

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Addressing mode

type of operand addressing e.g. indirect, indexed

{Extension of operand address space}
Definition statement

This place covers:

Increasing the size of the addressable operand memory space i.e. increasing the number of available addressable locations.

Extending the operand address space by increasing the bit length of addresses.

Extending the operand address space by use of multiple address spaces; bank pointer.

Relationships with other classification places

Address space extension in memory systems G06F 12/0615

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Organisation of register space

of multiple operands or results {(addressing multiple banks G06F 12/06)}
Definition statement

This place covers:

Address formation for a series or group of operands, e.g. for an array.

Address formation for pairs of operands at adjacent addresses i.e. addr;addr+1.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Prediction of operand addresses for operand prefetching

Addressing multiple banks

Special rules of classification

May also be classified according to the addressing mode.

{using stride}
Definition statement

This place covers:

Address formation for a series of operands by adding a stride value to the previous address to form the next address.

May be used to predict the next operand address.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Stride

offset or displacement which may be a constant.

Indirect addressing {, i.e. using single address operand, e.g. address register}
Definition statement

This place covers:

Address formation using a single address operand, e.g. using the contents of an address register or GPR.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Indirect addressing

the address is the value contained in the register specified in the instruction.

Direct addressing

the address is the value specified in the instruction.

GPR

general purpose register

Indexed addressing {, i.e. using more than one address operand}
Definition statement

This place covers:

Operand address formation using more than one address operand, e.g. using base + index/offset registers.

Indexed address formation or calculation details.

Uses at least two address operands which are added or concatenated. The resulting address may be longer than the base address, hence indexed addressing may be also used for address space extension.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Address space extension

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Indexed addressing

the address is the value contained in the base register specified in the instruction summed with the value contained in the index register specified in the instruction. The index part of the address usually consists of less bits than the base part of the address, and is therefore an offset from the base address

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • " index"," offset", "displacement" and "delta"
{using wraparound, e.g. modulo or circular addressing}
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Wraparound

incrementing the maximum address value, e.g. 11111111 leads to wraparound to the lowest address value, e.g. 00000000, so that addressing is continuous, avoiding an overflow error

Modulo or circular addressing

same meaning than Wraparound

{using scaling, e.g. multiplication of index}
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Scaling

indexed addressing where the index address is multiplied by a factor before adding to the base address

{using program counter as base address}
Definition statement

This place covers:

  • Address formation using the program counter as a base for indexed addressing;
  • PC-relative addressing.
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Next instruction addressing using an offset from the program counter.

Concurrent instruction execution, e.g. pipeline, look ahead
Definition statement

This place covers:

Simultaneous execution of instructions in general, in parallel or pipelined.

Special architectures where instruction execution is concurrent.

Includes stack machines.

Relationships with other classification places

Concurrent program execution: G06F 9/46.

{Instruction prefetching}
Definition statement

This place covers:

Prefetching and fetching of instructions for execution, in general.

Instruction buffering; instruction caches

{for branches, e.g. hedging, branch folding}
Definition statement

This place covers:

Prefetching of instructions for branch paths.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Hedging

Fetching both paths of an unresolved conditional branch

Branch folding

Removal of a branch instruction from the instruction stream, e.g. by including the branch condition in an instruction as a predicate

{using address prediction, e.g. return stack, branch history buffer}
Definition statement

This place covers:

Using a history of previous branch target addresses to predict the address to fetch from, e.g. branch target buffer;

Address buffers for predicting next fetch address for a branch, e.g. return address stack.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Dynamic prediction of branch direction

Static prediction of branch direction

Hybrid prediction of branch direction

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

BTB

buffer indexed by an instruction fetch address or PC, which returns the predicted target address if the instruction is a taken branch.

BHT

buffer indexed by a branch instruction address, which returns a prediction of whether the branch is taken or not.

BDT

buffer indexed by a branch type at decode time, which returns a prediction of whether the branch is taken or not.

Return address stack

Stack to hold the program address to return to after a Call-type branch. The stack structure allows nesting of Calls.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

BTB

Branch Target Buffer

BHT

Branch History Table

BTAC

Branch Target Address Cache

BDT

Branch Decode Table

{for instruction reuse, e.g. trace cache, branch target cache}
Definition statement

This place covers:

  • Prefetching of instructions intended to be used more than once, thereby saving fetch time;
  • Buffering of instructions for reuse, e.g. trace cache;
  • Branch target caches.
Relationships with other classification places

Program tracing for monitoring G06F 11/3466.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Branch target cache

History buffer of first instruction at a branch target, which returns an instruction rather than an address, thus saving fetch time.

Trace cache

Cache storing a history of previously executed paths through the program, as sequences of instructions. Accessing the trace cache returns the next predicted instructions in the sequence.

{Loop buffering}
Definition statement

This place covers:

  • Prefetching of instructions intended to be used in a loop, thereby saving fetch time;
  • Buffering of instructions for loops.
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific loop control instructions

Formation of the next instruction address for a loop; detection of loops

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Loopshort backward branch

Sequence of instructions executing repetitively

{with instruction modification, e.g. store into instruction stream}
Definition statement

This place covers:

Instruction prefetching in an architecture allowing instruction modification.

How to handle store-into-instruction-stream, wherein an instruction in memory is modified, e.g. by writing back a new operand value, hence the prefetched copy of the instruction is stale.

{Implementation provisions of instruction buffers, e.g. prefetch buffer; banks}
Definition statement

This place covers:

  • Special arrangements for buffering of prefetched instructions;
  • Prefetch buffers;
  • Banked or partitioned instruction buffers.
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Prefetch buffer

in this subclass, a buffer to hold a recently fetched set of instructions, usually between the instruction memory and the instruction decoder, e.g. cache line buffer.

Synonyms and Keywords

In patent documents, the following words/expressions are often used with the meaning indicated:

"cross-modifying code"

"instructions which can modify other instructions".

"self-modifying code"

"instructions which can modify themselves".

{Instruction alignment, e.g. cache line crossing}
Definition statement

This place covers:

Arrangements for (correct) alignment of instructions in prefetch buffers.

Instruction prefetching which crosses a line in memory or cache, for example for variable length instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Variable length instructions

Predecoding instructions for alignment information

{Decoding for concurrent execution}
Definition statement

This place covers:

Decoding for enabling the concurrent execution of instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Decoding of a single instruction

{Pipelined decoding, e.g. using predecoding}
Definition statement

This place covers:

Decoding for enabling the pipelined execution of instructions.

Predecoding stage in a pipeline.

Partitioned decoding stage.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Instruction alignment using predecode information

{Parallel decoding, e.g. parallel decode units}
Definition statement

This place covers:

Decoding for enabling the parallel execution of instructions.

Special details of decoding multiple instructions in parallel, e.g. decoding of Very Long Instruction Word format field.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Compressed VLIW instructions

{Operand accessing}
Definition statement

This place covers:

Retrieving operands for instructions, from memory, registers, other pipeline stages or execution units.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Load, Store instructions

Register file accessing in general

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "input operand" and "source"
  • "output operand", "result" and "destination"
{Data result bypassing, e.g. locally between pipeline stages, within a pipeline stage}
Definition statement

This place covers:

Arrangements for the transfer of an instruction result to a dependent instruction, without first storing in the architected state, e.g. bypassing the register file;

Transfer of operand data from the output of a functional unit to the input of another functional unit, without waiting for the completion of the data producing instruction, or without waiting for the data to be stored in the register file.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Transfer of data between Store and Load instructions for memory consistency

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "bypassing" and "forwarding"
{with global bypass, e.g. between pipelines, between clusters}
Definition statement

This place covers:

Bypass of an instruction result to a dependent instruction in another pipeline, or group of execution units, e.g. between clusters;

Bypass arrangements for global data.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Parallel execution units organised in clusters

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Cluster

Group of execution units and register resources

{Operand prefetching (cache prefetching G06F 12/0862)}
Definition statement

This place covers:

Prefetching of data operands;

Software data prefetching;

Prefetching from a data cache reduces cache misses during execution of the instruction using the data.

Relationships with other classification places

Prefetching between higher level memories: G06F 12/0862.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific instruction to prefetch data from memory

Instruction prefetching

Speculative load instructions

Prefetching between higher level memories

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Operand prefetching

Look-ahead fetching of an operand before the execution of the instruction which will use the operand

{Value prediction for operands; operand history buffers}
Definition statement

This place covers:

Reuse or prediction of the value of an operand;

Operand value prediction using a history of the value of an operand;

Operand value buffering for reuse;

Prediction of the address of an operand.

Relationships with other classification places

Data caches in general:G06F 12/08.

{Maintaining memory consistency (cache consistency protocols G06F 12/0815)}
Definition statement

This place covers:

How to maintain memory consistency during operand accessing for instruction execution.

Avoiding errors caused by loads and/or stores to the same memory address being executed out of order or concurrently.

Ensuring stored operands and fetched operands are consistent, e.g. memory disambiguation.

Ensuring out-of-order loads receive the latest store information by forwarding.

Relationships with other classification places

Cache consistency protocols: G06F 12/0815.

Multiprogramming arrangements for transaction processing: G06F 9/466.

Multiprogramming arrangements for program synchronisation: G06F 9/52.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific atomic or synchronisation instructions, e.g. Read-Modify-Write

Operand bypassing between Load and Store instructions

Consistency of architectural state

Cache consistency protocols

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Memory consistency

Keeping data in the memory up-to-date. Read data should not be stale; written data should not be overwritten by older data, which may occur in out-of-order execution.

Memory disambiguation

Checking stores against earlier executed out-of-order loads, and re-issuing the loads if their data is stale.

{Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution}
Definition statement

This place covers:

Runtime scheduling or issuing of instructions.

Instruction dispatching to execution units or execution buffers.

Concurrent execution of instructions.

Synchronisation of instruction execution.

Relationships with other classification places

Runtime scheduling of tasks: G06F 9/4806

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Accessing of operands for issue

Re-issuing of faulting instructions

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Issuing

Runtime selection or scheduling of the instructions to execute.

Superscalar

Architecture where more than one instruction is selected to be executed in parallel in one cycle.

VLIW

Very Long Instruction Word being a compound instruction word formed by the compiler, containing multiple sub-instructions to be issued and completed together in one cycle

{Dependency mechanisms, e.g. register scoreboarding}
Definition statement

This place covers:

Special arrangements to detect or record data dependencies between instruction operands at issue time.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Data dependency

When a first instruction specifies an operand which is also specified in a following second instruction, the second instruction is dependent on the first, and cannot be executed until the dependency is resolved, or the operand is available.

Register scoreboard

Table of indicators of which instructions use which registers. May be used for dependency checking by detecting two instructions having a matching indicator.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "Pseudo data dependency" , "false data dependency" , "anti-dependency" , "write-after-write dependency" and "output dependency"
{Register renaming}
Definition statement

This place covers:

Special arrangements to carry out register renaming, e.g. as a means of avoiding pseudo dependencies;

Rename tables and buffer, which may form part of a reorder buffer.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Reorder buffers

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Register renaming

Associating a logical register specified in an instruction to a unique physical register. Allows multiple physical registers to be assigned to hold data for multiple instances of a logical register, thus avoiding false dependencies.Relies on the set of physical registers being larger than the set of logical registers.

RAW, read-after-write dependency

Occurs when a read to the same location occurs after a write to the same location. If the instructions are not in program order, this may lead to wrong execution.

WAW, write-after-write dependency

It occurs when a write to the same location occurs after another write to the same location. If the instructions are not in program order, this may lead to wrong execution.

Pseudo data dependency, false dependency, anti-dependency, output dependency

Dependency which may be resolved without wrong execution, e.g. a write followed in program order by another write; a read followed in program order by a write.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "RAW" and "read-after-write dependency"
  • "WAW" and "write-after-write dependency"
  • "pseudo data dependency", "false dependency", "anti-dependency", "output dependency"
{Speculative instruction execution}
Definition statement

This place covers:

Execution of instructions ahead of program order, with the presumption that execution will prove to be correct e.g. speculative loads, boosting.

Speculative instructions which are executed e.g. alternative paths of a branch.

Execution of instructions dependent on a branch before its outcome is known.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Conditional instruction execution, e.g. predication

Result nullification for executed instructions

Recovery after mis-speculation

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Speculative instructions

Executed instructions which may not be on the actual path taken through the program, and therefore may require recovery after execution if mis-speculation occurs.

Speculative loads

Look-ahead or early execution of load instructions, where recovery would be needed in the case of mis-speculation.

{using dynamic prediction, e.g. branch history table}
Definition statement

This place covers:

Speculative execution of instructions using dynamic branch prediction;

Using runtime conditions, and the previous behaviour of branches, to predict the outcome of a branch, without having to wait for its execution;

Early generation of branch results.

References
Limiting references

This place does not cover:

Using hybrid branch prediction

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Dynamic prediction

Branch prediction based on runtime conditions, as opposed to compile-time branch prediction.

Branch history table

Branch prediction based on runtime conditions, as opposed to compile-time branch prediction.

Branch Target Buffer

Buffer indexed by an instruction fetch address or PC, which returns the predicted target address if the instruction is a taken branch

Branch History Table

Buffer indexed by a branch instruction address, which returns a prediction of whether the branch is taken or not.

Branch Decode Table

Buffer indexed by a branch type at decode time, which returns a prediction of whether the branch is taken or not.

Branch Prediction Counter

saturating counter used to obtain a weighting for a branch prediction based on several branch executions.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

BTB

Branch Target Buffer

BHT

Branch History Table

BTAC

Branch Target Address Cache

BDT

Branch Decode Table

{using static prediction, e.g. branch taken strategy}
Definition statement

This place covers:

Speculative execution of instructions using static branch prediction;

Branch prediction performed by compiler, and not dependent on runtime conditions, e.g. hint bits;

Static bit may be used to indicate an unconditional branch, if this is not clear from the opcode;

Static prediction may be used as default when no dynamic prediction is available.

References
Limiting references

This place does not cover:

Using hybrid branch prediction

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Static prediction

Branch direction is predicted based on compile-time branch prediction.

Hint bit

Bit in branch instruction inserted by compiler to give an indication whether branch predicted taken or not.

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "hint bit" and "static bit"
{using hybrid branch prediction, e.g. selection between prediction techniques}
Definition statement

This place covers:

Prediction schemes involving more than one type of predictor;

Static and dynamic prediction used alternately;

Local and global prediction mechanisms;

Two-level branch prediction.

References
Limiting references

This place does not cover:

Using dynamic prediction, e.g. branch history table

Using static prediction, e.g. branch taken strategy

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Two-level branch prediction

History of the outcome of a set of branches is used to select the predictor for a particular branch.

{from multiple instruction streams, e.g. multistreaming (initiation or dispatching of multiple tasks or threads G06F 9/48)}
Definition statement

This place covers:

  • Issuing instructions from multiple threads each having a context, including at least a program counter, and possibly registers and execution resources;
  • Includes multiple streams for different threads, or from both directions of a branch;
  • Interleaved execution of threads in a single or in multiple streams;
  • Stream selection.
Relationships with other classification places

Thread scheduling or multithreading at OS or application level G06F 9/46.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Context registers for multiple streams

Execution units or pipeline architectures for executing multiple streams

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Instruction stream

Architectural aspects, e.g. resources and context, used to execute a thread or series of instructions. Includes at least a program counter, and possibly including dedicated instruction buffers, registers, status register, execution units.

{of compound instructions}
Definition statement

This place covers:

Issuing of compound instructions;

Compounding single instructions into a group;

Issuing a group of instructions, that must complete in the same cycle;

Dispatching aspects of compound instructions, e.g. variable format VLIW instructions.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Decoding of VLIW format field

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Compound instruction

Consisting of sub-instructions, i.e. contains multiple opcodes, e.g. VLIW instructions.

{Reordering, e.g. using a queue, age tags}
Definition statement

This place covers:

Special arrangements for reordering of instructions issued out-of-order. Usually occurs at writeback stage;

Queue arrangements include reorder buffers;

Age tags include marking the instructions with the original program order.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Reordering

Restoring the program order after instruction execution, ensuring that the instructions complete in the correct order.

Age tag

An indicator associated with an instruction to indicate its original program order, e.g. in the case of instructions executed out-of-order.

{Result writeback, i.e. updating the architectural state}
Definition statement

This place covers:

Special arrangements to write back results to the architectural state, ensuring correctness of the architectural state;

Instruction completion.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Recovery of architectural state after an exception

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Architectural state

Runtime data in the pipeline resources, including program counter, instruction queue, status register, condition codes, general purpose and special purpose registers, rename data, pipeline registers, etc. The state is updated when one of these resources is written to.

{with result invalidation, e.g. nullification}
Definition statement

This place covers:

Ensuring correctness of the architectural state by nullifying the results of wrongly executed instructions.

Nullifying may use, for example, preventing writeback; tagging the result as invalid; clearing of result.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Cancellation of an instruction before execution using, for example, predication

Recovery from exceptions

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Nullification

In this subgroup, the invalidation of an instruction result. The instruction has already executed, but the results are invalid, and must not update the architectural state.

{Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F 11/00)}
Definition statement

This place covers:

Recovery of correct instruction execution after an exception or fault;

Restoring the correct architectural state after an exception, e.g. after branch mis-prediction, arithmetic overflow.

May require nullifying wrong results; flushing the instructions in the pipeline; restarting the pipeline from the point of exception.

Relationships with other classification places

Error detection or correction: G06F 11/00.

Exception handling in genera: G06F 11/0793.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Instruction result nullification

Special rules of classification

The group is only to be used for the handling of exceptions caused by instruction execution.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Architectural state

The runtime data in the pipeline resources, including program counter, instruction queue, status register, condition codes, general purpose and special purpose registers, rename data, pipeline registers etc.

Exception, fault

Error caused by the execution of an instruction, e.g. floating point overflow; page fault; mis-speculation.

{using multiple copies of the architectural state, e.g. shadow registers}
Definition statement

This place covers:

Recovery using multiple copies of architectural state;

Restoring the architectural state to that previous to an exception using a previous version of the state, e.g. checkpoint, future file, shadow registers.

Relationships with other classification places

Software debugging: G06F 11/36.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Shadow register structure

Special rules of classification

The subgroup is only to be used for the handling of exceptions caused by instruction execution. In particular, checkpointing for software debugging is not meant.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Architectural state

the runtime data in the pipeline resources, including program counter, instruction queue, status register, condition codes, general purpose and special purpose registers, rename data, pipeline registers etc.

{using deferred exception handling, e.g. exception flags}
Definition statement

This place covers:

Instruction exception handing which does not occur in the cycle in which the exception is detected, but later, e.g. at writeback stage.

{using instruction pipelines}
Definition statement

This place covers:

Concurrent execution using instruction pipelines;

Control of instructions moving through a pipeline of functional stages. A typical pipeline consists of these stages: Instruction fetch; Instruction decode; Operand fetching; Instruction issue; Instruction execution; Instruction completion/Result writeback;

Pipeline control, e.g. flushing, halting;

Pipeline stages, e.g. type of stage, number of stages;

Variable length pipeline, e.g. elastic pipeline;

Counterflow pipeline;

Cascaded pipelines.

Relationships with other classification places

Data-driven systems, e.g. tokens: G06F 9/4494.

Computer architectures for data-driven systems: G06F 15/82.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific instructions for pipeline control

Asynchronous pipeline control, e.g. using handshaking

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Pipeline

Series of linearly sequential execution stages for executing instructions. The stages have buffers between them for output data which is input into the next stage. The buffers may be clocked so that data from one stage moves into the next stage on a clock signal. All stages move at once, else an asynchronous pipeline.

Counterflow pipeline

Pipeline in which instructions travel down pipeline, but data travels up pipeline.

Cascaded pipeline

Parallel pipelines where a group of instructions are issued in successive cycles to produce a staggered execution of the group.

{Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking}
Definition statement

This place covers:

Instruction pipeline synchronisation;

Timing aspects of instruction pipelines, e.g. clock cycle, derating;

Clocking of pipeline stages; clock domains;

Clock skew problems;

Clock gating in pipelines, e.g. for power saving;

Latches and buffers between pipelines stages.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Specific instructions for pipeline control.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Clock skew

lack of synchronicity between instances of a clock signal caused, e.g. by differing clock wire lengths.

{Asynchronous instruction pipeline, e.g. using handshake signals between stages}
Definition statement

This place covers:

Asynchronous pipeline, e.g. using handshake signals between stages, e.g. ACK, DONE signals.

Pipelines where the stages do not all move at the same time.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Asynchronous pipeline

Pipeline where not all stages move at once, e.g. execution in a stage starts when a signal is received from previous stage, and ends by sending a done signal to next stage.

Handshake signals

Exchange of signals between stages, e.g. to inform a next stage when data is available to process, and to inform a previous stage when data may be forwarded.

{Variable length pipelines, e.g. elastic pipeline}
Definition statement

This place covers:

Pipeline with dynamically varying length.

Multiple pipelines having different lengths.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Pipeline length

The number of pipeline stages.

{Pipelining a single stage, e.g. superpipelining}
Definition statement

This place covers:

Pipeline architecture where a single stage is split into sub-stages using pipeline buffer, with higher clocking rate implied for that stage, e.g. pipelined execution unit; pipelined decode unit.

Pipeline architecture having multiple stages for the same function, e.g. two execution stages, without higher clock rate.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Pipelined decoding

{using a slave processor, e.g. coprocessor (peripheral processor G06F 13/12; vector processor G06F 15/8053)}
Definition statement

This place covers:

Concurrent instruction execution using slave processor or coprocessor which controls its own execution i.e. has a decode unit or sequencer;

Means and protocol to transfer instructions and data to a slave processor, and to receive results in return;

Detection of presence or absence of a slave processor;

Reconfigurable coprocessors i.e. not special purpose.

Relationships with other classification places

Vector processors: G06F, G06F 15/8053.

Cryptographic processors: G06F 21/123 .

I/O or DMA processors: G06F 13/12.

Image or graphics processors: G06T 1/20.

Specially adapted processors: G06F 17/00, G06F 19/00.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Execution units executing under control of a master decoder

Peripheral processor

Vector processor

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Host

master processor to which the coprocessor is a slave

Synonyms and Keywords

In patent documents, the following words/expressions are often used as synonyms:

  • "COP" and "coprocessor"
{for non-native instruction execution, e.g. executing a command; for Java instruction set}
Definition statement

This place covers:

Slave processors which receive and decode instructions which are not explicit in the instruction set of the host e.g. commands; function calls; using ESC; using memory-mapped commands;

Slave processors which are adapted to execute another instruction set, e.g. Java coprocessor.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Non-native instruction set

Instructions which cannot be executed on the master processor

{Arrangements for communication of instructions and data}
Definition statement

This place covers:

Special arrangements or protocols for transfer of instructions or commands, and for exchange of data with a slave processor which executes non-native instructions.

{using a plurality of independent parallel functional units}
Definition statement

This place covers:

Special arrangements for concurrent instruction execution using parallel functional units, implying the concurrent execution of multiple instructions, one in each of the functional units;

Parallel execution pipelines.

Relationships with other classification places

Arrays of processors G06F 15/78, G06F 15/80, G06F 15/16.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Parallel decode units

Concurrent execution using a slave processor

Special rules of classification

This group is only to be used for special architectural arrangements to enable the concurrent execution of instructions, not for the mere presence of parallel functional units.

Parallel functional units does not usually mean parallel processors. Multicore architectures may be found here only if they carry out concurrent execution of instructions from the same program.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Functional unit

Unit within the processor which carries out part of the execution of an instruction.

{controlled by a single instruction, e.g. SIMD}
Definition statement

This place covers:

Multiple parallel functional units controlled by a single instruction.

For SIMD execution, this class contains details relevant to the execution aspects, e.g. executing a global instruction according to local conditions.

Relationships with other classification places

SIMD architectures :G06F 15/80.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

SIMD

Acronym for "single instruction multiple data" being an architecture having a set of homogenous execution units which execute the same instruction in any given cycle, but which each have their own operand data, e.g. vector data.

{controlled by multiple instructions, e.g. MIMD, decoupled access or execute}
Definition statement

This place covers:

Multiple parallel functional units controlled collectively by multiple instructions.

Includes special techniques of parallel functional unit control in a superscalar or VLIW architecture.

Hardware streams.

Relationships with other classification places

MIMD architectures: G06F 15/16.

Special rules of classification

This group is only to be used for special architectural arrangements to enable the concurrent execution of instructions, not for the mere presence of parallel functional units executing multiple instructions.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

MIMD

Acronym for "multiple instruction multiple data" being an architecture having a set of homogenous execution units which execute different instructions in any given cycle, and which each have their own operand data.

VLIW

Acronym for "very long instruction word" being an architecture having a compound instruction word formed by the compiler, containing multiple sub-instructions to be issued and completed together in one cycle, and having no interdependencies.

Hardware stream

Hardware resources used for the context and execution of a stream or thread of instructions.

{organised in groups of units sharing resources, e.g. clusters}
Definition statement

This place covers:

Control of parallel execution by groups of functional units, such as multiple execution units sharing local memory;

Partitioned architectures, e.g. for hardware multistreaming.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Cluster

Group of execution units with shared register resources.

Hardware stream

Hardware resources used for the context and execution of a stream or thread of instructions.

{controlled in tandem, e.g. multiplier-accumulator}
Definition statement

This place covers:

Multiple functional units which are controlled in tandem or cascade to carry out an instruction.

Multiple functional units controlled by the same instruction but not in the same cycle.

Relationships with other classification places

Hierarchical adders: G06F 7/50.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

MAC

Multiplier-accumulator unit

{for complex operations, e.g. multidimensional or interleaved address generators, macros}
Definition statement

This place covers:

Multiple functional units which are controlled in tandem or cascade to carry out an instruction which is a complex operation, possibly over multiple cycles.

{with adaptable data path}
Definition statement

This place covers:

Parallel functional units controlled in tandem to execute complex operations using adaptable datapath.

Relationships with other classification places

Reconfigurable computer architectures: G06F 15/7867.

Arrangements for executing specific programs
Definition statement

This place covers:

Execution of a single program.

References
Limiting references

This place does not cover:

Program initiating or program switching in the context of multiprogramming

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

High level language

refers to what is commonly known in the art, i.e. a language containing human readable constructs intended to be used by a human programmer and to be translated to binary code for execution.The fact that it is theoretically possible to read, understand and directly program binary code does not qualify this type of code as HLL.

Low-level language

language that provides little or no abstraction from a computer's instruction set architecture

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

HLL

High level language

Bootstrapping (security arrangements therefor G06F 21/57)
Definition statement

This place covers:

Starting up or shutting down a computer system and loading of the operating system:

Using memory images to boot;

Boot using compressed bios;

Starting jobs after loading os;

Manual booting procedures;

Bootstrap code, e.g. grub, lilo;

Primary and secondary boot loader.

References
Limiting references

This place does not cover:

Low level details of resetting means

Compiler bootstrapping

Fault tolerant booting

Details of Power-On Self Test (POST)

Secure booting

Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

For set top boxes

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Bootstrap

a simple program that begins intitialization of the computer's operating system

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

IPL

Initial program load

{Processor initialisation}
Definition statement

This place covers:

Initialisation of the processor and the processor's direct environment immediately after the initial reset signal.

This group deals with local issues - there is no network involved.

Includes:

  • Initial microcode loading;
  • Selecting the very first instructions to be executed after a hardware reset;
  • Processor address boot facilities;
  • I/O channel initialisation (see also G06F 9/4416);
  • Making BIOS ROM invisible after booting;
  • Means to shadow BIOS from ROM to (faster) RAM.
References
Limiting references

This place does not cover:

Loading microcode per se

Configuring of multiprocessors

{Initialisation of multiprocessor systems}
Definition statement

This place covers:

Initialisation of processors in a multiprocessor system immediately after the initial reset signal.

References
Limiting references

This place does not cover:

Configuring of multiprocessors

{Loading of operating system}
Definition statement

This place covers:

Loading of the operating system and the preparatory steps for loading the OS.

Also includes the launching of application programs once the OS has been loaded, and OS formats on storage devices.

{Boot device selection}
Definition statement

This place covers:

Searching and selecting a bootable boot device.

{Multiboot arrangements, i.e. selecting an operating system to be loaded}
Definition statement

This place covers:

Computer systems having more than one bootable OS

  • Choosing one of the available bootable OSs and booting from that OS (dual-boot or multi-boot);
  • Providing mechanical means to switch between the OSs (see US2006107029);
  • When a computer is switched on for the first time, the user is required to choose one of the OSs available on the computer. Once an OS is chosen, the other OSs are made unavailable. The next time the computer is started, it will boot only the selected OS (see EP0794484).
References
Limiting references

This place does not cover:

Emulating one OS using another

Two active OSs, where one OS (the guest OS) is running as an application in the other OS (the host OS)

When one of this plurality of OSs serves as a backup OS in case of failure, recovery OS

Multiple OSs running simultaneously in the context of a VMM

G09F6/455H

{Configuring for operating with peripheral devices; Loading of device drivers}
Definition statement

This place covers:

Initialisation and configuration of peripheral devices, insofar as this configuration is related to the interaction with the operating system.

Also deals with the configuration of the operating system in order to be able to interact with peripheral devices.

A peripheral device in this class should be understood as a passive entity, i.e. whose functioning is controlled by the host computer to which it is attached. Systems involving a host computer with attached devices that have processing capabilities of their own should be treated as a multiprocessor or a networked distributed system.

This initialisation/configuration does not have to occur during booting (although it typically does) - it can also take place e.g. when a device is hot-inserted (plug and play).

This group deals with local issues - there is no network involved.

  • Assigning IRQ lines, I/O addresses;
  • Configuring registers on the peripheral;
  • Device discovery: detecting which devices are present; building device trees;
  • Adapting OS for device configuration;
  • Device initialisation;
  • Config.sys peripheral device facilities.

Loading or installation of device drivers. This does not necessarily have to occur at boot time.

References
Limiting references

This place does not cover:

Configuration of printer parameters

Updating of firmware in peripheral devices

Loading/installing device drivers

Configuring software or OS when this configuration is not related to interacting with the peripheral device

Management of devices over a network

Informative references

Attention is drawn to the following places, which may be of interest for search:

Program control for peripheral devices - the inner workings of a device driver, i.e. how the driver performs its job of interfacing between OS & device, how the driver is structured, etc.

Electrical details of hot-plugging, plug and play

Peripherals with a processor and software running thereon together with the computer's processor can be considered a multiprocessor system. A distinction has to be made between the device driver - i.e. the software that runs on the host to interface with the peripheral - and the software running on the peripheral.

Reconfiguration of FPGAs, PLDs

HAVi networks

Configuration of network elements

Special rules of classification

A device driver is understood to be software used by a computer to control/operate a peripheral device. A peripheral is any kind of device that can be attached to/inserted into a computer in order to expand its functionality (modem, sound card, disk drives). A device driver- i.e. the piece of software that is loaded on a host computer and that enables the host computer to control the operation of an attached peripheral - differs from the peripheral's operating software - i.e. the piece of software that resides on the peripheral itself and executed by the peripheral's processor that allows the peripheral to operate as an independent unit.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Peripheral Internal

an expansion card that is plugged into one of the ISA/PCI slots

Peripheral External

an external device connected through the serial/parallel port a PC card

{Plug-and-play [PnP]}
Definition statement

This place covers:

Arrangements for automating the process of device driver loading or configuration of a peripheral device or the operating environment of the computing element hosting the peripheral device in in response to dynamic changes in the peripheral constitution of the computing element (addition or removal of peripheral devices).

Plug-and-play in the context of this class occurs either during boot time or during run-time (live addition or removal).

{Self describing peripheral devices}
Definition statement

This place covers:

The peripheral device itself contains all the information (or a reference to a place where the information is stored) required for its configuration and the configuration of the operating environment. In other words, it is the peripheral device and not the operating environment that is burdened with the task of providing configuration information or device drivers.

{Network booting; Remote initial program loading [RIPL]}
Definition statement

This place covers:

Booting of client computers, processors or devices that do not have the necessary boot code locally available but retrieve the boot code from a remote source, e.g. a boot server in a network environment.

Specific topics included:

  • Booting of diskless computers ("net" computers);
  • "Push" booting: a server computer boots a client computer by sending a boot program to the client computer;
  • PXE (Preboot Execution Environment)

The Preboot Execution Environment (PXE) is an industry standard client/server interface that allows networked computers that are not yet loaded with an operating system to be configured and booted remotely by an administrator. The PXE process consists of the client notifying the server that it uses PXE. If the server uses PXE, it sends the client a list of boot servers that contain the operating systems available. The client finds the boot server it needs and receives the name of the file to download. The client then downloads the file using Trivial File Transfer Protocol and executes it, which loads the operating system.

  • Booting a thin client in a "client device/data center" environment (see US2006/161765);
  • Network booting;
  • Booting diskless workstations;
  • Booting thin clients.
References
Limiting references

This place does not cover:

Booting of multiprocessor systems, e.g. where one processor (the master) sends the boot or initialisation code to the other processors (slaves)

BOOTP, DHCP protocol

Network protocols involving booting

Informative references

Attention is drawn to the following places, which may be of interest for search:

Wake-on-LAN (WoL)

Special rules of classification

Remote booting in the context of a first-time and one-off installation of an OS is also classifed in the G06F 8/61.

Examples: US5758165, US5717930, US6151674.

Synonyms and Keywords

In patent documents, the following abbreviations are often used:

RIPL

Remote Initial Program Load

PXE

Preboot Execution Environment

{Suspend and resume; Hibernate and awake}
Definition statement

This place covers:

Suspend/Resume and Hibernate/Wake Up refer to techniques to put a system in a low power, non-operating mode, thereby preserving the system state that existed at the time of going into Suspend or Hibernate. The next time the computer is started, operation continues at the point where it left off, rather than starting from scratch.

  • Speeding up the boot process by restoring persisted data from previous executions rather than going to the whole boot process.
  • Hibernating a system to persistent storage on a first computer, transporting the storage to a second computer and resuming the execution there. Please note that this is not process migration.
  • Multiple removable storage devices, each having a different hibernated system image stored thereon; resuming the different system images on one computer by switching the storage devices (see e.g. US5680540, EP0498374, XP13105759).
  • Quickly bringing a computer into an operational state by copying a memory image from persistent storage to RAM, thereby bypassing the lenghty conventional boot process (see e.g. US2005/0240755).
References
Limiting references

This place does not cover:

Low-level, electrical details of suspend and resume

Power Management

Normal Shutdown (without saving state information - the next boot starts from scratch)

Suspending a running process and resuming its execution later in the context of process scheduling

Saving operational state of running applications when unexpected shutdown events occur

Wake-on-LAN

Informative references

Attention is drawn to the following places, which may be of interest for search:

Booting a computer system when an error/ fault is involved. Includes Dealing with errors that occur during the boot process itself (e.g. when encountering a corrupt BIOS); * Rebooting the system after a previous irregular shutdown (e.g. due to a power failure), thereby restoring as much as possible the system state that existed before the irregular shutdown occurred.In absence of an emergency power supply, a power failure will cause the computer system to be simply powered down, inevitably resulting in the loss of system state. The next time the computer is booted, the system state will be restored as much as possible.

Graceful shutdownWhen a power failure is detected, an emergency power supply (e.g. UPS) is activated giving the system enough time to do a proper shutdown (when shutting down a computer system, no state information is saved).Graceful hibernation.When a power failure is detected, an emergency power supply (e.g. UPS) is activated giving the system enough time to do a proper hibernation (thereby saving the system state) before eventually powering down.Dealing with power failures that occur when the system is in suspend mode, i.e. when the RAM is still powered;In battery-powered systems, suspending or hibernating the system when the battery level drops below a predetermined level

Special rules of classification

The techniques of Suspension and Hibernation differ from each other in the degree of persistency of saving the system state.

With Hibernation, the system state is stored on a non-volatile memory device, e.g. HDD, while in the case of Suspension, the system state is stored in volatile memory (e.g. RAM).

In the G06F 9/4418 we only deal with situations where the reason or the system to suspend or hibernate is controlled/intentional e.g. after user presses power off button, after a preset period of inactivity for power saving purposes. When the reason to suspend or hibernate is the occurrence of a power failure, low battery voltage or another anomaly (e.g. system hang), then the document should go to the G06F 11/1441 (see Related Fields). The subsequent restart of the is classified in the G06F 11/1417.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Hibernation

also known as Suspend-to-Disk (S2D) and is defined as sleeping mode S4 in the ACPI specification.

Suspension

also known as Suspend-to-RAM (STR) and is defined as sleeping mode S3 in the ACPI specification.

{Shutdown}
Definition statement

This place covers:

Shutting down the computer, the opposite operation of bootstrapping (G06F 9/442).

References
Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

Suspend and resume

Graceful shutdown in case of power failure, e.g. using an uninterruptible power supply (UPS)

Program loading or initiating (bootstrapping G06F 9/4401; security arrangements for program loading or initiating G06F 21/57)
Definition statement

This place covers:

Preparing a program for execution, including the actual launching of the program. This class does not deal with the actual execution of the program.

Deals with program loading, i.e. transferring program code from a storage location where it can not be directly executed by the processor (typically HDD, floppy drive, but it may also be volatile memory of an other processor) to a location from where it can be directly executed by a processor (typically RAM):

  • Load program code from an internal source (e.g. HDD) into RAM loading of DLLs;
  • Absolute and relocating loaders;
  • Relocation of program code;
  • "Push loading": client sends program code to server, server executes the code and sends the results back to the client;
  • Rearranging the physical layout of the program code installed on secondary storage in order to improve program launch/loading (WO2007056364, US5857101, US6658648, US5933630, WO9953395).
References
Limiting references

This place does not cover:

Loading of device drivers

Process Migration

Secure loading

Informative references

Attention is drawn to the following places, which may be of interest for search:

Loading of microcode

Bootstrapping

Protocols for network applications involving the movement of software and/or configuration parameters, e.g. applets

{Configuring for program initiating, e.g. using registry, configuration files}
Definition statement

This place covers:

Run-time configuration of software and computer applications, for example:

Configuring the Windows registry;

User profiles: roaming (i.e. restoring the user's settings at a different computer), multiple users (i.e. each user has a different profile).

References
Limiting references

This place does not cover:

Configuration management in the context of software development

Configuration of peripheral devices

Configuration of FPGA, PLA

Configuration of parameters specifically aimed at networking/communication

Informative references

Attention is drawn to the following places, which may be of interest for search:

Gaming configure

Personalization of smart cards

Configuration of the network and network elements

Protocols for network applications involving terminal/user profiles

Differentially changing configuration parameters

Special rules of classification

Configuration wizards that assist a user in configuring a software application, are also classified in G06F 9/453 (Help systems).

{Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading}
Definition statement

This place covers:

Ways to load program code whereby, rather than first loading the entire program code before starting execution, the program code is loaded only when needed.

Also includes:

  • Saving memory space and preventing unnecessary processing by only loading the program parts that are actually used; Parts that are never executed are never loaded;
  • Starting execution once certain parts are loaded: no need to wait for the whole program to be loaded;
  • Executing instructions as they are loaded: the idea of streaming;
  • Java constant pool resolution
  • Dynamic linking/loading is also known as: incremental, partial, run-time, lazy; on-demand linking/loading.
Synonyms and Keywords

In patent documents, the following abbreviations are often used:

DLLs

Dynamic Link Library

{Plug-ins; Add-ons}
Definition statement

This place covers:

Dynamically loading special software components to exisitng applications in order to extend their functionality, e.g. Adobe Flash-Player.

{Selecting among different versions}
Definition statement

This place covers:

Determining the right version of a software component to be loaded.

{Retargetable}
Definition statement

This place covers:

Program loading explicitly taking into account hardware characteristics of the target.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Retargetable program installation/update

{Fat binaries}
Definition statement

This place covers:

Computer programs containing code native to multiple instruction sets (processor architectures).

{Code layout in executable memory}
Definition statement

This place covers:

How software components should be placed in a RAM, e.g. occupying neigbouring sections.

{Execute-in-place [XIP]}
Definition statement

This place covers:

Skipping or reducing the step of loading and initialization of program code.

Techniques used:

  • XIP: eXecute-In-Place: execute programs from where they are persistenly stored. There is no program loading.
  • Pre-initialise modules: program code may be loaded, but it is already partially or totally initialised
  • Romization of program code

XIP (Execute In Place) refers to the execution program code directly from the memory where it is stored, without first loading the program code to volatile executable memory (RAM).

Where the G06F 9/445 relates to the preparatory process of making program code ready for execution - loading, i.e. transferring the code to executable memory; linking, i.e. resolving references; initializing data structures - XIP relates to methods where the program code can be directly executed without having to go through this preparatory process.

One definition of XIP, taken from US2002/069342: "A XIP architecture is defined by a system's ability to execute one or more bytes of code while still resident within non-volatile memory (e.g., read-only memory (ROM)), without first transferring the code to volatile memory (e.g., random access memory (RAM)."

Another definition of XIP, taken from US2004/193864: "A called execute-in-place (XIP) technology refers to a specific function provided with a storage device, which data or command codes stored in the storage device can be directly accessed by a central processing unit (CPU) in a computer system, without pass through a random access memory (RAM), thus reducing power consumption and data loss, and increasing executing speed."

For program code to be directly executable from the memory where it is stored, it is required that the memory is suitable to directly execute code (read US2002/138702, [0004]-[0008]), and that the code is in such a form that it can be directly executed.

Examples of XIP:

  • In normal computer systems, directly executing program code from an externally connected memory device;
  • In embedded systems, executing the software directly from the non-volatile memory where it is stored.

Also included:

  • Romization, romizer: processes and tools to generate a directly-executable program image.
  • Semi-directly-executable code: the code is partially prepared for execution, the rest takes place at load time.
Special rules of classification

The U3 technology does not fall under the XIP technology, because the program code is not executed directly from the USB stick.

{Portable applications, i.e. making applications self-contained, e.g. U3 standard}
Definition statement

This place covers:

Executing applications without installing them before, for example according to the U3 standard, or portable application packages ("Portable App") started directly from a USB stick.

{Program code verification, e.g. Java bytecode verification, proof-carrying code (high-level semantic checks G06F 8/43; testing and debugging software G06F 11/36)}
Definition statement

This place covers:

Verification of program code, for example:

Java bytecode verification.

Proof carrying code.

inter instruction consistency checks.

References
Limiting references

This place does not cover:

High-level semantic checks

Testing and debugging software

Informative references

Attention is drawn to the following places, which may be of interest for search:

Compile-time checking

Testing

Software testing

Certifying or maintaining trusted computer platforms

Special rules of classification
  • In the G06F 11/36 group, the question is: does the program do what it is expected to do? In other words, for a given input, does the program produce the expected output? The program is considered as a black box, only the external behaviour is studied. The tests that are performed do not take into account the implementation or the language that is used to write the program. We are here on the level of users/developers/specifications.
  • In the G06F 9/44589, a test is performed to see whether the (compiled) program code does not do anything that is not allowed by the rules of the target machine. In other words, the question is: does the program comply with code specific requirements ?

The two groups are on a different level. It is possible for a program to respect all code specific requirements and thus to pass the G06F 9/44589 tests, but not to produce the expected output and thus not to pass the G06F 11/36 test.

  • In the G06F 8/43 (Compile-time checking), source code is checked. In most cases, this is done by the compiler but it can also be performed by a separate program. In contrast, the G06F 9/44589 tests already compiled code. In the G06F 8/43, the verification is performed based on source code specific aspects, whereas in the G06F 9/44589 this is done on the basis of target machine related aspects
{Unloading}
Definition statement

This place covers:

  • Unloading program components from memory or terminating applications, e.g. when they are not needed anymore.
  • Java class unloading: removing Java classes from memory when they are not used anymore, e.g. because the class has become "unreachable".

Class unloading is not the same as Garbage Collection: in class unloading, what is removed is program code in executable memory (classes), whereas in Garbage Collection it is data (objects, i.e. class instances) that are removed.

References
Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

Uninstallation

Garbage collection

Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Definition statement

This place covers:

The emulation (see glossary) of entities, e.g. operating systems, processors, classified under G06F 9/00.

References
Limiting references

This place does not cover:

In-circuit emulation

Dynamic binary instrumentation may use techniques similar to emulators and binary optimizers

Virtual memory

Terminal emulation

Computer simulation, in which a model of a system under investigation is being simulated

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Emulation

In computing, emulation refers to the duplication and imitation of the functions of one computer system/program by another computer system/program, different from the first one, so that the emulated behaviour fully or closely resembles the behaviour of the original system/program.

{Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators}
Definition statement

This place covers:

Software implementation of a machine (computer) that executes programs like a physical machine:

  • Java Virtual Machine (JVM);
  • Microsoft .NET common language runtime (CLR);
  • Smalltalk virtual machines.
References
Limiting references

This place does not cover:

Compile time binary to binary translation

Run-time interpretation of high level language programs

G06F9/4551

Run-time binary to binary translation

{Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation}
Definition statement

This place covers:

Interpretation of high-level language code, e.g. BASIC.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Handling plain, natural text, word processors, spreadsheets, XML, etc

{Command shells}
Definition statement

This place covers:

Giving commands to a computer (OS) by means of a (graphical) user interface.

These commands can be given via the command line or by performing actions on GUI objects.The commands are typically interpreted by a command interpreter.

  • Scripts, recording and executing GUI command scripts.
{Runtime code conversion or optimisation}
Definition statement

This place covers:

The execution of binary code/bytecode that is not native to the current run-time execution environment by translating the non-native binary code/bytecode into native code just before execution and subsequently executing the native code .

Subsequently, execution can be optimised as follows:

  • By performing a retranslation of the non-native binary code/bytecode yielding more optimal native binary code e.g. by taking into account run-time information;
  • By directly transforming the native binary code yielding more optimal native binary code .

media33.png

The G06F 9/45516 also deals with the initial and subsequent run-time transformation of native binary code into more optimal native binary code.

media34.png

For the purpose of completeness, the G06F 9/45516 also deals with the translation of intermediate bytecode to a different intermediate bytecode (e.g. Java bytecode to UCSD P-code). This however, is a more theoretic possibility and will not occur frequently.

The majority of the documents in this class deal with the translation of intermediate bytecode to native binary code and more specifically with the dynamic compilation of Java bytecodes into native code (JIT compilation).

Relationships with other classification places

Both classes have the same goal (i.e. translation from one binary format into another) but the point in time when this translation is performed is different: at run-time, just before or during execution (G06F 9/45516) and statically, pre-run-time (G06F 8/52).

Both G06F 9/45516 and G06F 9/3017 deal with run-time translation of binary code. However, in the G06F8/455B4 the translation relates to a program as a whole and is realised by a software translator, whereas in the G06F 9/3017 the translation relates to individual instructions that are about to be executed and is performed by the processor's internal hardware and.

In G06F 9/45516, the processor is fed with the translated, native instructions; it doesn't know anything about the translation that took place. However, in G06F 9/3017 the processor is fed with the non-native instructions; translation into native code takes place on-the-fly (i.e. at the moment the instruction is actually executed by the internal hardware of the processor).

  • Difference between G06F 9/45516 and G06F 9/45508
  • The G06F 9/45508 is also related to the execution of binary, non-native code. However, the non-native code is emulated rather than translated: an emulator acts as an virtual machine and interprets the non-native code.
References
Limiting references

This place does not cover:

Run-time instruction translation

Profiling per se

Special rules of classification

Compilation techniques that occur at runtime but that are independent of the runtime aspect, i.e. that might equally well be used in an offline context, should be classified in G06F9/45 and get Indexing Code G06F 9/45516 .

{Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM}
Definition statement

This place covers:

Translation of code at runtime prior to executing it natively, e.g. bytecode into native machine code. Dynamic compilation.

References
Application-oriented references

Examples of places where the subject matter of this place is covered when specially adapted, used for a particular purpose, or incorporated in a larger system:

Translation of one binary program to another before the program is ever executed. Static binary translation.

{Hypervisors; Virtual machine monitors}
Definition statement

This place covers:

  • Simultaneously executing multiple operating systems using a Virtual Machine Monitor (VMM). The following passage, taken from US2004230794, provides a good definiton of a VMM: 'A VMM enables plural operating systems to run on a single machine by "virtualizing" the entire machine. Conventionally, an operating system controls the use of the physical hardware resources of a machine (e.g., the memory, the processor, etc.), and thus the actual hardware of the machine is exposed to the operating system. When a VMM is used, however, the machine's hardware (e.g., devices) are only exposed to the VMM. The VMM, then, exposes "virtual" machine components to the operating systems'.In G06F 9/45545, plural operating systems execute simultaneously as guest and host (without a VMM)..
  • Process switching for virtual machines;
  • Handling of non-implemented instructions;
  • Address trapping for emulating other memory architectures;
  • Host/guest and mode switching instructions;
  • Switching between endian modes (endian conversion on a bus G06F 13/40).
References
Limiting references

This place does not cover:

Loading of microprogram

Mode switching during interrupts per se

{Provision of facilities of other operating environments, e.g. WINE (I/O emulation G06F 13/105)}
Definition statement

This place covers:

Emulation of one OS by another OS

  • Simultaneously executing first and second operating systems by executing the second OS as a guest OS on top of the first OS (the host OS). No virtual machine monitor (VMM) is needed. The use of guest and host OSs is described in the following passage, taken from US2004230794: ' Certain techniques allow operating systems to exist side-by-side on the same machine without the use of a virtual machine monitor. One such technique is to have one operating system act as a "host" for the other operating system. (The operating system that the "host" is hosting is sometimes called a "guest.") In this case, the host operating system provides the guest with resources such as memory and processor time '
  • Interrupt handling of other OS
  • Non I/O services of other OS, e.g. facilities for emulation of virtual memory
  • Memory mapping and address trapping for emulating I/O
Relationships with other classification places

Associated address trapping is in G06F 9/45533.

References
Limiting references

This place does not cover:

I/O emulation

{Bare-metal, i.e. hypervisor runs directly on hardware}
Definition statement

This place covers:

A bare-metal hypervisor runs directly on the host's hardware to control the hardware and to manage guest operating systems, e.g. Citrix XenServer, VMware ESX, Microsoft Hyper-V..

{Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox}
Definition statement

This place covers:

Hypervisor runs within a conventional operating system environment.

{Para-virtualisation, i.e. guest operating system has to be modified}
Definition statement

This place covers:

Para-virtualisation is a virtualization technique that presents a software interface to virtual machines that is similar but not identical to that of the underlying hardware.

{Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS}
Definition statement

This place covers:

Mechanisms to adapt the instruction set of a guest system to the instruction set offered by the underlying hypervisor and/or native processor.

{Hypervisor-specific management and integration aspects}
Definition statement

This place covers:

Relates to specific management and integration aspects of hypervisors.

Functions needed to manage virtual machines or to integrate them into the execution environment that are specific to a hypervised system, e.g. handling of virtual machine instances, creating, cloning, deleting instances, starting and stopping virtual machines, distributing and migrating instances, managing I/O and storage access, isolating virtual machines for security reasons, managing memory of instances.

Multiprogramming arrangements
Definition statement

This place covers:

aspects of multiprogramming, i.e. where more than one process / task is present and this presence is essential for identifying the problem and / or the solution; a process / task is defined here as a program in execution.

References
Limiting references

This place does not cover:

Multi-threading at the hardware level

Execution of whatever software without any technically relevant multiprogramming aspect; by technically relevant it is meant that there have to be details on the way in which these multiple tasks co-exist and/or interact (the mere presence of two applications is not sufficient for classifying the document in G06F 9/46)

G06F9/40, G06F 9/44

Mere development of interfaces / objects

Saving and restoring the state of a system, i.e. hibernation

Saving and restoring the state of an object, i.e. object persistence

G06F9/44M4

Batch processing

Suspend and resume task / process / thread execution without details on context saving and restoring

Saving and restoring the state of a mobile agent together with additional details on the mobile agent itself

Saving and restoring program state during debugging

Access rights for memory resources, e.g. access to memory according to privilege rings

Access rights associated to human beings or documents where the final aim is to enforce protection at the user level without giving technically relevant details on the multiprogramming implementation

Documents just mentioning a multiprocessing / distributed object-oriented systems and which focus on a specific use / application (e.g. e-commerce, monitoring, information retrieval, security)

Documents mentioning a transaction but dealing, in fact, with nothing more than techniques involving a request for a service, without any detail on the ACID (Atomicity, Consistency, Isolation, Durability) properties; e.g. e-commerce transactions

Network- and protocol-specific aspects

Aspects already covered by G06F 9/48, G06F 9/50, G06F 9/52, G06F 9/54

See special rules of classification of the corresponding classes

Special rules of classification

Rule 1

When a document qualifies for one of the classes in the table of rule 2 below, the class G06F 9/46 should not be assigned.

Rule 2

The following table specifies the class to be assigned:

Technical details on:

Class to be assigned:

Saving or restoring of program or task context

Saving or restoring of program or task context with multiple register setsThis class takes precedence over G06F 9/461

Program control block organisationThis class takes precedence over G06F 9/461

Structure and arrangements for distributed object oriented systems, e.g. CORBA, Jini, DCOM

Transaction processing, namely transactions involving the ACID (Atomicity, Consistency, Isolation, Durability) properties

Transactional memory, i.e. transparent support for the definition of regions of code that are considered a transaction, the support being provided either in hardware, software or with hybrid-solutionsThis class takes precedence over G06F 9/466 For speculative lock acquisition, G06F 9/528 takes precedence

Specific access rights for resources, e.g. using capability register

Rule 3

The following table specifies the classes which could be assigned in addition to the classes of rule 2 above, to cover further technical details; the class(es) identified as Context information should also be checked and assigned, if relevant:

Further technical details on:

The structure of bridges between different distributed object-oriented systems

  • Class to be assigned: S06F209/4601
  • Context information: G06F 9/465

The lookup of interfaces and/or the structure of lookup servers / repositories

  • Class to be assigned: S06F209/4602
  • Context information: G06F 9/465

The handling of references to remote objects / namespace implementation details within the context of distributed object-oriented systems

  • Class to be assigned: S06F209/4603
  • Context information: G06F 9/465
Program initiating; Program switching, e.g. by interrupt
Definition statement

This place covers:

transfer, initiation or dispatching of tasks, i.e. programs in execution, either locally or within a distributed system

References
Limiting references

This place does not cover:

Specific details on power distribution and power saving

Scheduling of printer jobs

Instruction streams within a processor (e.g. hardware threads) and instruction level details

Suspension and resumption at system level (i.e. involving the bootstrapping)

Mere loading of code linked to the initiation

Compile-time scheduling

G06F9/45E5, G06F9/45M1

Details on the task context structure as well as on its saving and restoring

Scheduling in terms of space

See special rules of classification for G06F 9/50

Process migration in the context of load (re-)balancing, without any technically relevant detail on the migration itself

Mere starting of a backup application at a certain date/time

G06F11/14A4B

Low level (bus-related) details of interrupt handling and interrupt controllers

Mere starting of an antivirus application at a certain date/time

Scheduling of human resources

Special rules of classification

Rule 1

When a document qualifies for one of the classes in the table of rule 2 below, the class G06F 9/48 should not be assigned.

Rule 2

The following table specifies the class to be assigned:

Technical details on:

Class to be assigned:

Initiation of a task by means of an interrupt, i.e. the aspects of handling/servicing an interrupt

I nterrupt priority mechanisms This class takes precedence over G06F 9/4812

I nitiation of a task by means of an timer related interrupt This class takes precedence over G06F 9/4812

I nitiation of a task by means of an interrupt with variable priority This class takes precedence over G06F 9/4812

I nitiation of a task by means of an interrupt with variable priority, said priority being time dependent This class takes precedence over G06F 9/4812 and G06F 9/4831

Initiation, transfer and dispatch of a task, i.e. a program in execution, by another program; creation, e.g. fork() system call, and initiation, e.g. exec() system call, of a task / process / thread, virtual machine in the same or different machine

T ask life-cycle, e.g. stopping, restarting, resuming execution This class takes precedence over G06F 9/4843 For scheduling algorithms and internal operation of a scheduler, G06F 9/4881 takes precedence

R esuming the execution of a task on a different machine, i.e. migration This class takes precedence over G06F 9/4843 This class takes precedence over G06F 9/485 For migration for load balancing purposes, G06F 9/5088 takes precedence

M obile agents, i.e. tasks specifically designed to migrate This class takes precedence over G06F 9/4843 This class takes precedence over G06F 9/485 This class takes precedence over G06F 9/4856 For cloning and replication of mobile agents, only G06F 9/4868 should be assigned For migration policy, e.g. auction, contract negotiation, of mobile agents, only G06F 9/4875 should be assigned

Scheduling strategies for dispatcher, e.g. round robin, multilevel priority queues; internal operation of a scheduler

A lgorithms for real-time scheduling of processes, i.e. scheduling taking into account the deadlines of the applications being executed This class takes precedence over G06F 9/4843 This class takes precedence over G06F 9/4881

Power and heat aware scheduling of tasks This class takes precedence over G06F 9/4843 This class takes precedence over G06F 9/4881

Rule 3

The following table specifies the classes which could be assigned in addition to the classes of rule 2 above, to cover further technical details; the class(es) identified as context information should also be checked and assigned, if relevant:

Further technical details on:

Exception handling

  • Class to be assigned: S06F209/4801
  • Context information: G06F 9/4812

Application starting, stopping, resuming

  • Class to be assigned: S06F209/4802
  • Context information: G06F 9/485

Scheduling of tasks on multiprocessor systems

Scheduling of a set of tasks by taking into account precedence and dependency constraints, or time and/or occurrence of events

Scheduling of a set of tasks by taking into account constraints on resources, resource based scheduling of tasks

Internals of a task scheduler

Synonyms and Keywords

The expression "scheduling", in the patent- and non patent-documentation, can have two distinct meanings when referring to task and resources:

1) scheduling in terms of time, with the acceptation of task scheduling, i.e. when to assign a task to a computing unit,

2) scheduling in terms of space, with the acceptation of resource scheduling, i.e. which resource(s) to allocate and how to partition them.

It is the first interpretation, the one which can be found in the context of the G06F 9/48.

Allocation of resources, e.g. of the central processing unit [CPU]
Definition statement

This place covers:

selection, allocation and de-allocation of hardware and/or software resources, like servers, processes, threads, CPUs, memory; combination and/or partitioning of resources, e.g. cloud computing, hypervisors and logical partitions; mapping of tasks onto parallel / distributed machines; load balancing and re-balancing of resources in distributed systems.

References
Limiting references

This place does not cover:

Specific details on power distribution and power saving

Allocation of disk resources and storage resources in general not being RAM

Scheduling of printer jobs

Specific details on emulation and internal functioning of a virtual machine

Mapping of tasks onto multi-processor systems carried out at compile-time

G06F9/45M1

Pure scheduling aspects, i.e. scheduling in terms of time, without considering resource allocation

Garbage collection techniques

Allocation of human resources

Allocation based on bandwidth, protocol and network related aspects

Allocation of resources within a printer / multifunctional peripheral

Special rules of classification

Rule 1

When a document qualifies for one of the classes in the table of rule 2 below, the class G06F 9/50 should not be assigned.

Rule 2

The following table specifies the class to be assigned:

Technical details on:

Class to be assigned:

Allocation of resources to service a request

Allocation of resources to service a request, the resources being hardware resources other than CPUs, Servers and Terminals This class takes precedence over G06F 9/5005

Allocation of memory resources to service a request This class takes precedence over G06F 9/5005 This class takes precedence over G06F 9/5011 for documents detailing both the allocation and release of memory resources, the class G06F 9/5022 should also be assigned

Release of resourcesThis class takes precedence over G06F 9/5005 This class takes precedence over G06F 9/5011 For documents detailing both the allocation and release of memory resources, the class G06F 9/5016 should also be assigned

Allocation of processing resources, e.g. CPUs, Servers, Terminals, processes, threads, virtual machines

A llocation of processing resources by considering data affinity This class takes precedence over G06F 9/5005 This class takes precedence over G06F 9/5027

A llocation of processing resources by considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration. Candidates for this group are documents dealing with requests for composite (web) services, where the various components should execute in a certain order and resources for said execution should be assigned accordingly. Also included are documents dealing with "workflow" like systems, where a request to "execute" a project definition, comprising a set of interrelated actions, is sent to a server This class takes precedence over G06F 9/5005 This class takes precedence over G06F 9/5027

A llocation of processing resources by considering hardware capabilities This class takes precedence over G06F 9/5005 this class takes precedence over G06F 9/5027

Allocation of processing resources by considering the load This class takes precedence over G06F 9/5005 This class takes precedence over G06F 9/5027

Allocation of processing resources by considering software capabilities, namely software resources associated or available to the machine, e.g. Web services offered by a specific machine This class takes precedence over G06F 9/5005 This class takes precedence over G06F 9/5027

Partitioning or combining of resources This class should contain also documents dealing with cluster membership, i.e. assignment of a server to a certain group based on some criteria (see exemplary documents WO0156785, EP0805393).

Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs This class takes precedence over G06F 9/5061

Grid computing, cloud computing With the expression grid / cloud computing it is meant an environment where multiple services are offered by the various members of the grid (often making use of idle periods), said members being usually located over a large scale network. Candidate documents should have at least one of the following concepts: i) set up of a grid, e.g. registering a new member, re-organizing the grid; ii) usage of a service in the grid, e.g. locating the member, servicing a request. This class takes precedence over G06F 9/5061

Logical partitioning of resources; management and configuration of virtualized resources This group deals with the creation and management (e.g. allocation) of logical partitions and resulting virtual machines in multiprocessor systems; it also deals with the concept of virtualization in general, namely the mere management (e.g. creation, deletion) of an abstract, logical representation of a resource and its configuration (e.g. re-definition of its behaviour). This class takes precedence over G06F 9/5061 For documents detailing the migration of a virtual machine to a different node, the class G06F 9/4856 should also be assigned

Techniques for balancing or rebalancing the load in a distributed system by taking into account the load of the whole system

Techniques for balancing or rebalancing the load in a distributed system by migrating tasks / jobs / virtual machines This class takes precedence over G06F 9/5083 For documents detailing the migration of a task/job/virtual machine to a different node, the class G06F 9/4856 should also be assigned

Allocation of resources based on power and heat considerations

Rule 3

The following table specifies the classes which could be assigned in addition to the classes of rule 2 above, to cover further technical details; the class(es) identified as Context information should also be checked and assigned, if relevant:

Further details on:

Allocation based on performance criteria

Allocation based on proximity

Indication of availability of resources

  • Class to be assigned: S06F209/5003
  • Context information: All groups belonging to G06F 9/50

Enforcing and/or taking into account lower and/or upper ceilings on resource usage in the context of resource allocation

  • Class to be assigned: S06F209/5004
  • Context information: All groups belonging to G06F 9/50

Cluster membership

  • Class to be assigned: S06F209/5005
  • Context information: G06F 9/5061

Dependency or time-specific aspects which are taken into account during the allocation

  • Class to be assigned: S06F209/5006
  • Context information: G06F 9/5038

Allocation of low-level processor resources, e.g. logical units, registers, cache lines, decoding stages

Monitoring techniques used in conjunction with the CPU / thread allocation

  • Class to be assigned: S06F209/5008
  • Context information: All groups belonging to G06F 9/50

Offloading computations (e.g. because lacking some of the necessary capabilities)

Allocation based on priority

Creation, use, management of pool of resources

  • Class to be assigned: S06F209/5010
  • Context information: All groups belonging to G06F 9/50

Controlling aspects of an already submitted request, e.g. polling for a status, deleting / modifying the request

Reservation of resources so as to have them ready at the time of the actual allocation

Selection, by a broker, based on the submitted request, of an appropriate server via a registry or a yellow pages server

Session management

Task decomposition

Selection of a thread / process within a multithreaded / multiprocessing machine, said selection being aimed to service a request

Workload prediction within the context of CPU / process allocation and load rebalancing

Workload threshold within the context of CPU / process allocation and load rebalancing

remote execution techniques whereby program code is executed remotely from the client that initiated the execution and the client provides the code to the remote machine

  • Class to be assigned: S06F209/5409
  • Context information: All groups belonging to G06F 9/50
Synonyms and Keywords

The expression "scheduling", in the patent- and non patent-documentation, can have two distinct meanings when referring to task and resources:

1) scheduling in terms of time, with the acceptation of task scheduling, i.e. when to assign a task to a computing unit,

2) scheduling in terms of space, with the acceptation of resource scheduling, i.e. which resource(s) to allocate and how to partition them.

It is the second interpretation, the one which can be found in the context of G06F 9/50.

Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Definition statement

This place covers:

Arbitrating access from tasks to shared resources (e.g. mutual exclusion), synchronising the execution of tasks with respect to each others (e.g. producer - consumer) ; a task is defined here as a program in execution.

References
Limiting references

This place does not cover:

Speculative instruction issuing and/or data consistency

Generation of synchronisation instructions at compile time

G06F9/45

Transaction processing

Arbitration of access on a bus

Concurrency management in a database

Special rules of classification

Rule 1

When a document qualifies for one of the classes in the table of rule 2 below, the class G06F 9/52 should not be assigned

Rule 2

The following table specifies the class to be assigned:

Technical details on:

Class to be assigned:

Barrier synchronisation

Algorithms to detect and / or avoid deadlocks when tasks interact with each other

Mutual exclusion algorithms, specific implementations of locks and other means to ensure a "correct" (from the concurrency point of view) access to a shared resource

S peculative execution beyond synchronisation primitives (e.g. busy lock) This class takes precedence over G06F 9/526; e.g. if a document discloses a mutual exclusion algorithm involving speculative execution beyond busy locks, then it should be classified only in the G06F 9/528 and not also in the G06F 9/526

Rule 3

The following table specifies the classes which could be assigned in addition to the classes of rule 2 above, to cover further technical details:

Further technical details on:

Low level features of atomic instructions (e.g. test&set) used to implement locks / mutual exclusion primitives

Tokens (e.g. cooperative locking), token managers and lock managers

Multi-mode locks, i.e. with locks specifying also a mode (e.g. read-write)

Interprogram communication
Definition statement

This place covers:

Communication between tasks, i.e. programs, processes, threads in execution, either on the same machine or on different ones, where the multiprogramming aspect is relevant, e.g. Inter-Process-Communication.

References
Limiting references

This place does not cover:

Communication between a device and a CPU without any technically relevant detail on multiprogramming concepts or with device specific details

G06F 3/00, G06F 13/00, G06F 13/102 (for device drivers)

Interaction of the user with the system, i.e. the GUI, and not between the Processes / applications subsequent to the user interaction

Communication which does not involve multiprogramming concepts, e.g. invocation of a subroutine

G06F9/40, G06F 9/44

Pattern-adapters

Non-remote method invocation between objects

A rchitectural details, e.g. interface repositories, object adapters, on distributed object-oriented systems, e.g. CORBA, DCOM Communication-specific details of the remote method invocation should (also) be classified in G06F 9/548

Allocation of a remote service to a client

Communication between tasks but predominant aspect peculiar of another field, e.g. monitoring, information retrieval on the web, software download and installation

Addressing memory

Hardware mechanisms for inter-CPU communication

Collaborative editing on a file without any technically relevant details on the event handling aspect

Network- and protocol-specific details

Event management relating to network management, e.g. alarms produced by network devices, and no technically relevant details on the multiprocessing aspect is present

Messages being distributed over a network, i.e. e-mails, instant messaging

Rule 1

When a document qualifies for one of the classes in the table of rule 2 below, the class G06F 9/54 should not be assigned.

Rule 2

The following table specifies the class to be assigned:

Adapter mechanisms e.g. between incompatible applications

Communication between tasks, either on the same machine or on different ones, by subscribing to events and issuing event notifications when certain events happen, e.g. Event Management Systems, Unix alarms; communication aspects related to the broadcasting of the notifications

User-generated data transfer from the process / application point of view, e.g. clipboards, dynamic data exchange (DDE), object linking and embedding (OLE)

Communication of processes via buffers, shared memory, pipes, sockets and the like

Communication between tasks residing in different layers e.g. user- and kernel-space

Communication of processes via a message passing system, i.e. messaging middleware, and the inherent technicalities, e.g. message structure or queue handling; delivery of messages according to preferences of the recipients (which have to be processes)

Implementation of Remote Procedure Calls, e.g. stubs, (un-)marshalling of parameters, namely invocation of a procedure at a remote location; lightweight RPC, i.e. procedure call between protection domains / different address spaces on a single machine

Implementation of Remote Method Invocations, i.e. details which are peculiar to RPC between (mainly Java and COM) objects, e.g. object serialization, stub / proxy download This class takes precedence over G06F 9/547

Technical details on:

Class to be assigned:

Rule 3

The following table specifies the classes which could be assigned in addition to the classes of rule 2 above, to cover further technical details:

Further technical details on:

Communication aspects related to task execution in a client-server system

  • Class to be assigned: S06F209/5401
  • Context information: All groups belonging to G06F 9/54

Interception of communications between tasks / layers

  • Class to be assigned: S06F209/5402
  • Context information: All groups belonging to G06F 9/54

Handling of events within a single system, e.g. Unix alarms

  • Class to be assigned: S06F209/5403
  • Context information: G06F 9/542

Distributed event management systems or handling of events produced in a distributed system

  • Class to be assigned: S06F209/5404
  • Context information: G06F 9/542

Event handling related to the execution of a GUI and as long as the event handling aspect is technically relevant

  • Class to be assigned: S06F209/5405
  • Context information: G06F 9/542

Broadcasting / multicasting and sequence related problems of event related messages and as long as the network aspect, if any, is not predominant

  • Class to be assigned: S06F209/5406
  • Context information: G06F 9/542

Exchange of messages between processes by using a Message Oriented Middleware, e.g. Java Messaging Services

  • Class to be assigned: S06F209/5407
  • Context information: G06F 9/546

Particular techniques for handling message queues (or similar structures)

  • Class to be assigned: S06F209/5408
  • Context information: G06F 9/546

Remote execution techniques whereby program code is executed remotely from the client that initiated the execution and the client provides the code to the remote machine

  • Class to be assigned: S06F209/5409
  • Context information: All groups belonging to G06F 9/54
Error detection; Error correction; Monitoring (error detection, correction or monitoring in information storage based on relative movement between record carrier and transducer G11B 20/18; monitoring, i.e. supervising the progress of recording or reproducing G11B 27/36; in static stores G11C 29/00)
Definition statement

This place covers:

  • Error avoidance (G06F 11/004)
  • Identification related to error detection / correction or monitoring (G06F 11/006)
  • Reliability and availability analysis of computing systems (G06F 11/008)
  • Error detection and/or correction (G06F 11/07 and subgroups)
  • Detection or location of defective computer hardware by testing at a time outside of "normal operating mode", e.g. during standby, idle time or at power on (G06F 11/22 and subgroups)
  • Checking the correct order of processing (G06F 11/28)
  • Monitoring on computing systems (G06F 11/30 and subgroups)
  • Preventing errors by analysing, debugging and testing software (G06F 11/36 and subgroups)
References
Limiting references

This place does not cover:

Error detection, correction or monitoring in information storage based on relative movement between record carrier and transducer

Supervising the progress of recording or reproducing

Error detection, correction or monitoring in static stores

Informative references

Attention is drawn to the following places, which may be of interest for search:

Testing of digital circuits

Error detection, correction or monitoring in control mechanisms

Methods or arrangements for verifying the correctness of marking on a record carrier

Monitoring patterns of pulse trains

Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes

Digital transmission of data

Counter-measures to a fault

Special rules of classification

Implementation details of particular digital data processing techniques applied to error detection, error correction or monitoring are classified in the relevant subgroups of G06F 11/00.

The error detection/correction process in neural networks is also covered (G06F 11/1476).

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Fault

Physical defect, imperfection, or flaw that occurs within some hardware component, or logical defect of a piece of software. Essentially, the definition of a fault, as used in the fault tolerance community, agrees with the definition found in the dictionary. Faults may be permanent, transient or intermittent.

Error

The logical manifestation of a fault, observable in terms of incorrect instructions of or corrupted data in a (computer) system. E.g. a fault in a DRAM cell will never be observed if the memory location is never accessed. Specifically, an error is a deviation from accuracy or correctness.

Failure

The incorrect functioning of a system as perceivable by a user or the system's environment as a consequence of an error. A failure is the non-performance, the untimely performance or the performance in a subnormal quantity or quality of some action that is due or expected.

Redundant hardware

Additional hardware for performing the same function as another hardware part, provided that in faultless operation you could renounce on either hardware parts of the system without loosing functionality.

Data representation

A physical or logical encoding (scheme) for data, which allows the latter to be processed, stored or transmitted by a machine.

Redundancy in data representation

A representation of data using more resources than strictly necessary to encode the desired information such that in the error free situation one could renounce to some of said resources without loosing information.

Redundancy in operation

Performing (a set of) operations more than once, or performing sequentially different implementations of a particular function, or performing additional operations which (allow to) restore a system in a state from which its correct operation can be resumed after a failure.

Time diversity

the concept to have an redundant system in which one of the redundant components operates with a delay with respect to the other in order to avoid common mode failures that would affect both redundant components in the same way at the same time, thereby not being detectable/correctable.

Master-checker setup

A redundant configuration in which a master CPU drives the system. The checker CPU is synchronized (often at clock level) with the master. It processes the input data stream as the master (and often also the very same program). Whenever the master drives an output signal, the checker compares its own value with the data written by the master. A mismatch triggers an error signal. The master-checker mode is supported in many modern microprocessors by a comparator integrated into the pin driver circuitry, thus reducing the external logic to a few chips for interfacing the error signals." The master-checker system generally gives more accurate answers by ensuring that the answer is correct before passing it on to the application requesting the algorithm being completed. It also allows for error handling if the results are inconsistent. Depending on the merit of a correct answer, a checker-CPU may or may not be warranted. In order to alleviate some of the cost in these situations, the checker-CPU may be used to calculate something else in the same algorithm, increasing the speed and processing output of the CPU system." There are two possible configurations: Master-Listener and Cross-Coupled. The Master-Listener lock step configuration pairs two processors, with one as a complete Master and the other as a complete Listener, the latter having disabled output drivers. In the Cross-Coupled configuration, one of the processors, the SI-Master, drives the system interface bus, while the other processor, the SC-Master, drives the secondary cache bus. The SI-Master has disabled output drivers for the secondary cache interface bus while the SC-Master has disabled output drivers for the system interface bus

Normal operating mode

The operation of a system or software once it is deployed and provides the desired service as opposed to its development, maintenance, test or idle time.

Fault masking

Hiding the presence of an fault to the user or the environment of a (computer system by means of some sort of redundancy such that the perceived system functionality is not affected.

Active fault masking

Taking particular actions (e.g. reconfiguration, failover) not performed in the error free situation to mask a fault.

Passive fault masking

When a system operates such that no particular action is necessary to mask a fault because all necessary operations are constantly performed independently of the presence of a fault (e.g. majority voting).

Normal operating mode

the operation of a system or software once it is deployed and provides the desired service as opposed to its development, maintenance, test or idle time.

Interconnections

are physical media and may be of point-to-point type or of bus type. Two interconnections are only considered redundant if: they both physically connect the same nodes, wherein nodes are the source producing or the final destination consuming the data to be transmitted, and are configured to perform the same data transmissions.

Monitoring

monitoring refers to an extra functionality for observing properties of a running computing system in its normal operating condition without inputting test data

Mirrored data

Two copies of the data where it is supposed that both copies contain the same data at any moment.

Backed up data

The second copy of the data reflects the data of the first copy at a particular moment.

{protecting against parasitic influences, e.g. noise, temperatures}
Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

{Error avoidance (G06F 11/07 and subgroups take precedence)}
Definition statement

This place covers:

All measures taken to prevent an error from happening. This can either be by preventing the fault from being present or by ensuring that the presence of the fault will not lead to an error.

References
Limiting references

This place does not cover:

Measures in response to the occurence of a fault, e.g. measures designed to limit the impact of the error

Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

This subgroup is only to be used for subject-matter for which no other technique (like fault-masking based on redundancy) to respond to the occurrence of a fault applies. If techniques corresponding to G06F 11/07 and subgroups apply, the subject-matter must be classified there instead.

{Identification (G06F 11/2289 takes precedence)}
Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

{Reliability or availability analysis}
Definition statement

This place covers:

Reliability theory describes the probability of a system completing its expected function during an interval of time. In reliability theory availability is the degree to which a system is in a specified functioning condition. In the literature various definitions can be found. One well established defines availability as "the probability that a system is operating at a specified time t", Barlow and Proschan: Mathematical Theory of Reliability (1975). A simple representation of availability is a ratio of the expected value of the uptime of a system to the aggregate of the expected values of up and down time. For example in the case of systems having a MTBF (Mean Time Between Failure) and MTTR (Mean Time to Recovery), availability = MTBF/(MTBF + MTTR). Typical terminology that the group contains: error prediction, failure rate, predictive maintenance, longevity, etc. A lot of documents deal with pure theory and propose new formula for better assessing a system in terms of reliability.

References
Limiting references

This place does not cover:

Forecasting, planning

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Reliability

The term refers to the ability of a system or component to perform its required functions under stated conditions for a specified period of time.

Availability

The ratio of the total time a functional unit is capable of being used during a given interval to the length of the interval.

Downtime

The term downtime is used to refer to periods when a system is unavailable.

Uptime

Part of active time during which an equipment, machine, or system is either fully operational or is ready to perform its intended function.

MTBF

Mean Time Between failure is the predicted elapsed time between inherent failures of a system during operation.

MTTF

Mean Time to Failure is the time taken for a part or system to fail for the first time.

MTTR

Mean Time To Repair is a basic measure of the maintainability of repairable items. It represents the average time required to repair a failed component or device.

MTTR

Mean Time To Recovery is the average time that a device will take to recover from any failure.

Responding to the occurrence of a fault, e.g. fault tolerance
Definition statement

This place covers:

  • Error detection/correction on computing systems using redundancy in data representation (also includes RAID systems involving parity) (G06F 11/08 and subgroups).
  • Error detection/correction on computing systems using redundancy in operations (G06F 11/14 and subgroups).
  • Error detection/correction on computing systems using redundancy in hardware (G06F 11/16 and subgroups).
  • Error or fault processing without redundancy (G06F 11/0703 and subgroups).
  • Safety measures (G06F 11/0796)
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Fault

Physical defect, imperfection, or flaw that occurs within some hardware component, or logical defect of a piece of software. Essentially, the definition of a fault, as used in the fault tolerance community, agrees with the definition found in the dictionary. Faults may be permanent, transient or intermittent.

Error

The logical manifestation of a fault, observable in terms of incorrect instructions of or corrupted data in a (computer) system. E.g. a fault in a DRAM cell will never be observed if the memory location is never accessed. Specifically, an error is a deviation from accuracy or correctness.

Failure

The incorrect functioning of a system as perceivable by a user or the system's environment as a consequence of an error. A failure is the non-performance, the untimely performance or the performance in a subnormal quantity or quality of some action that is due or expected.

Redundant hardware

Additional hardware for performing the same function as another hardware part, provided that in faultless operation you could renounce on either hardware parts of the system without loosing functionality.

Data representation

A physical or logical encoding (scheme) for data, which allows the latter to be processed, stored or transmitted by a machine.

Redundancy in data representation

A representation of data using more resources than strictly necessary to encode the desired information such that in the error free situation one could renounce to some of said resources without loosing information.

Redundancy in operation

Performing (a set of) operations more than once, or performing sequentially different implementations of a particular function, or performing additional operations which (allow to) restore a system in a state from which its correct operation can be resumed after a failure.

Normal operating mode

The operation of a system or software once it is deployed and provides the desired service as opposed to its development, maintenance, test or idle time.

Fault masking

Hiding the presence of an fault to the user or the environment of a (computer system by means of some sort of redundancy such that the perceived system functionality is not affected.

Active fault masking

Taking particular actions (e.g. reconfiguration, failover) not performed in the error free situation to mask a fault.

Passive fault masking

When a system operates such that no particular action is necessary to mask a fault because all necessary operations are constantly performed independently of the presence of a fault (e.g. majority voting).

Mirrored data

Two copies of the data where it is supposed that both copies contain the same data at any moment.

Backed up data

The second copy of the data reflects the data of the first copy at a particular moment.

{Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation}
Definition statement

This place covers:

The methods for error/fault processing on computing systems in normal operating mode that do not imply the use of any redundancy techniques. The error/fault processing, as it is defined in the subgroup, comprises one or more of the following steps:

  • the error detection step (G06F 11/0751 and subgroups)
  • the error/fault reporting/storing step (G06F 11/0766 and subgroups)
  • the root cause analysis step of the error/fault (G06F 11/079)
  • the remedying step (G06F 11/0793)
  • wherein
  • the error/fault reporting/storing refers to collecting/storing of information related to the error/fault (e.g. a performing a memory dump after detecting an error).
  • the root cause analysis of an error aims at identifying the initial cause of an error/fault.
  • the remedying step refers to the actions taken on the computing system in order to overcome an error/fault.
  • It should be noted that the subgroup does not cover the error/fault detection methods involving the check of the correct order of processing of a program or a system (G06F 11/28).
Relationships with other classification places

Root cause analysis in a hardware testing environment: G06F 11/22

Root cause analysis in a software testing/debugging environment: G06F 11/36

References
Limiting references

This place does not cover:

Monitoring power failures

Responding to power failures

Exception handling during concurrent execution

Error/fault detection or recovery by retry

Error/fault detection by checking the correct order of processing of a system or a program

Monitoring per se, reporting or storing of non-error data

Protection against unauthorized memory accesses

Security (detection of attacks, malware, unauthorised accesses)

Error/fault processing in manufacturing/control systems/environment

Error detection, correction or monitoring in information storage based on relative movement between record carrier and transducer

Error in Transmission Systems (error detection/correction in data transmission)

Network security Detection/protection against malicious traffic

Fault management in networks wherein the error/fault is related to the data exchange protocols or to the network equipments (e.g. routers or a switches)

Monitoring of traffic in a network or of network components (e.g. routers or switches)

Monitoring testing in wireless networks

Special rules of classification

Classifying a document within G06F 11/0703 - G06F 11/0793 requires the two following actions:

  • Classifying the document in a subgroup corresponding to the most relevant functional aspect of the error/fault processing described in the document.
  • G06F 11/0751 and its subgroups for the function of error/fault detection e.g. comparing data to an error threshold
  • G06F 11/0766 and its subgroups for the function of error/fault reporting/storing
  • e.g. performing a memory dump after detecting an error
  • G06F 11/079 for the function of root cause analysis
  • e.g. determining the first error event causing the others
  • G06F 11/0793 for the function of error/fault remedying
  • e.g. executing a specific interrupt handler to clear the error/fault
  • Although it is not standard practice, a document can be classified in several subgroups of the list defined above, according to the circumstances.
  • Classifying the document in a subgroup corresponding to the most relevant architectural environment described in the document, see subgroups from G06F 11/0709 - G06F 11/0748.

No such assignment is required in case the document provides no architectural details or refers to a general computer.

Similarly, a document can be classified in several "architecture" subgroups, according to the circumstances.

{Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element}
Definition statement

This place covers:

A safe computer system protects its user(s) and/or environment from hazards whether its intended function is performed correctly or not. This group deals with measures taken to ensure that a computer-based system stays safe (i.e. does not present a danger to persons or its environment) when it is no longer able to provide its normal functionality due to the presence of an error. This requirement typically occurs in many real-time control systems. The subject-matter of is group is different from fault-masking since the latter attempts to maintain the desired functionality of a system in the presence of faults whereas this group relates to ensuring a safe condition when faults cannot be masked, thereby degrading the desired system functionality.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

If such a system continues to operate albeit with degraded hardware or software functionality, additional classification symbols in the appropriate subgroups may be necessary.

Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

Error detection or correction by redundancy in data representation, e.g. by using checking codes
Definition statement

This place covers:

Documents where the error detection/correction in a computer system is done by redundancy in the representation of the data.

Most often this redundancy arises from the fact that more bits are used to represent the data than strictly necessary. However, these groups cover as well cases where the data is stored twice, but in different formats (e.g. the second time using inverse logic).

However, subject-matter where 2 (or more) identical copies of the data are stored, is not treated here (see informative references)

References
Limiting references

This place does not cover:

Data with redundancy of data representation stored on storage with movable components

Error detection or correction codes per se

Transmission of data using redundancy of data representation

Informative references

Attention is drawn to the following places, which may be of interest for search:

Redundant storage of data

Special rules of classification

Generally only 1 class is given. Only invention information is classified.

Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
Definition statement

This place covers:

Subject matter where more bits are used to represent the data than strictly necessary, however without representing the data twice (or more often).

Subject-matter dealing with host-to-memory or host-to-host transfers is classified in this group per se, except when the protection is on the level of blocks of data (which is in G06F 11/1004).

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Protecting a block of data words

Special rules of classification

As soon as the redundant representation is stored on storage, the subject-matter should be classified in G06F 11/1076 and subgroups and not in other subgroups. This is independent of how the redundant representation is determined or what representation is used. Group is not used for classification.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Memory

solid state devices used as main memory which are either directly addressable by the associated CPU (meaning that they are located on the high speed bus), or are not addressable internal memories (such as registers and buffers). As such, memory is different from storage.

Storage

media from which data needs first to be loaded before it can be used for computing.

{to protect a block of data words, e.g. CRC or checksum (G06F 11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F 21/00)}
Definition statement

This place covers:

The use of checking codes on bigger units of data than a single word to detect the presence of errors in the data.

This group does not cover correction of data.

In this group, it is irrelevant for what purpose the checking is being used (e.g. for storing the data in memory, for transmission of the data to another component in the computing system, ...) as long as it is related to error detection.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Security arrangements for protecting computers or computer systems against unauthorized activity

Computer virus detection or handling

Using checking codes for detecting unauthorised modifications

Using checking codes in data communication

{in individual solid state devices (G06F 11/1004 takes precedence)}
Definition statement

This place covers:

That subject-matter where the error detection and/or correction is done on data stored in a single solid state device (i.e. the detection/correction is done when reading data from or writing data into the memory). It is independent of what function the solid state device has in the system. The relevant criterium is the type of component on which the data is stored (i.e. solid state devices in contrast to disks, tapes or other storage devices with moving components).

References
Limiting references

This place does not cover:

To protect a block of data words

Informative references

Attention is drawn to the following places, which may be of interest for search:

Protection of blocks of data being transferred (from memory to memory or between host and memory)

Parity RAID in storage

Special rules of classification

G06F 11/1004 takes precedence.

{using codes or arrangements adapted for a specific type of error (G06F 11/1048 takes precedence)}
Definition statement

This place covers:

This group and its subgroups cover specific code arrangements, i.e. documents describing how the ECC codes to be applied to the data are determined. As an example, documents describing row and column parity are classified here

Special rules of classification

G06F 11/1048 takes precedence.

{Error in accessing a memory location, i.e. addressing error}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Protection against unauthorized access to memory

{Identification of the type of error}
Special rules of classification

Not used for classification.

{Simple parity}
Special rules of classification

Not used for classification

{Unidirectional errors}
Special rules of classification

Not used for classification.

{with specific ECC/EDC distribution}
Definition statement

This place covers:

ECC codes where different bits of a data word are stored in different memory modules. Documents classified here, do not deal with calcualtion of ECC/EDC but only on where the data with the corresponding code is stored in the device (e.g. on different modules of the same device).

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Parity distribution in a Redundant Array of Independent storage devices

Special rules of classification

Only classify here when no other group applies.

G06F 11/1012 (code arrangements) takes precedence.

G06F 11/1048 (hardware arrangements) takes precedence.

{using arrangements adapted for a specific error detection or correction feature}
Definition statement

This place covers:

This group and its subgroups cover coding where the hardware plays a role, e.g. to make the error correction or detection faster, to reduce the power consumption for detecting/correcting errors, ...

The hardware involved must be described.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Parity in RAID systems

{Bypassing or disabling error detection or correction}
Definition statement

This place covers:

This group covers documents in which no error detection/correction by redundant coding is performed at all in the normal situation.

Relationships with other classification places

Subject-matter covering circuits where ECC/EDC codes are calculated in parallel during operation are to be classified in G06F 11/1048.

{Updating check bits on partial write, i.e. read/modify/write}
Special rules of classification

Not used for classification.

{Correcting systematically all correctable errors, i.e. scrubbing}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Memory refresh tehniques

{in cache or content addressable memories}
Definition statement

This place covers:

This group covers ECC when it concerns a feature which is specific to caches or content addressable memories.

For instance if an additional ECC is used for the cache with respect to the memory.

{in sector programmable memories, e.g. flash disk (G06F 11/1072 takes precedence)}
References
Limiting references

This place does not cover:

G06F 11/1072 takes precedence

Special rules of classification

G06F 11/1072 takes precedence

Documents classified in this group should be sent to G11C 29/00 as well.

{in multilevel memories}
Definition statement

This place covers:

Covers all subject-matter related to memories of which the cells can store more than 2 values.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Architectural details of multilevel memories

Special rules of classification

Documents classified in this group should be sent to G11C 29/00 as well.

{Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
Definition statement

This place covers:

Redundancy using parity calculation and stripping in redundant arrays of storage devices such as :

  • Hard Drives (e.g. RAID)
  • Semiconductor memories (e.g. RAID of SSD/Flash disks)
  • Optical Drives (e.g. RAID in ODD archives)
  • Tape (e.g. RAIT)
Relationships with other classification places

Mirroring in RAID: G06F 11/2053

Use of parity in memories which do not constitute a redundant array and are close to the processor (e.g. ECC or arithmetic code in a semiconductor memory on the high speed bus): G06F 11/1008

References
Limiting references

This place does not cover:

Control as such of RAID system

Mirroring

Redundancy on a disk used for reproduction

Special rules of classification

If the document can be classified in a subgroup of the G06F 11/1076, then it should not appear in the head subgroup. Only those documents which cannot be classified in one or several subgroups (e.g. G06F 11/108, G06F 11/1084 etc) have to be classified in the head subgroup.

It is important to evaluate whether the parity calculation aspect is present and if specifics about fault recovery / rebuilding are present in the document. If such topic is not present of if the document talks about general parity aspects mixed with other topics, the Indexing Code groups should be used.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

RAID

Redundant Array of Independent Disks is a technique for implementing fault tolerance in storage devices.

Rebuild

Action of regenerating lost data from redundant data present in available drives / memories.

JBOD

Just a Bunch Of Disks represent a group of disks without particular redundant scheme implemented.

{Degraded mode, e.g. caused by single or multiple storage removals or disk failures}
Definition statement

This place covers:

Using the parity to reconstruct data which would otherwise have been lost when a storage device is failing or is removed.

When the reconstruction takes place once a new disk is available, G06F 11/1092 subgroup is used.

When the reconstruction takes place on a spare disk that was available, G06F 11/1088 subgroup is used.

References
Limiting references

This place does not cover:

Actual replacement of a failing disk

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

RAID

Redundant Array of Independent Disks is a technique for implementing fault tolerance in storage devices.

Error detection or correction of the data by redundancy in operation (G06F 11/16 takes precedence)
Definition statement

This place covers:

Although not fully consistent with the title of this group we consider that prophylactic additional saving-related measures like check-pointing, backing-up or state copying, which are performed before the occurrence of a fault in order to be able to recover or restore (at least partially) in case a fault occurs in the future, and which do not rely on hardware redundancy, are to be classified under this group.

The corresponding reverse operations of restoring and/or recovering and/or rolling back fit in naturally, since these are performed after the occurrence of a fault. The same holds for any type of redoing. All these activities are considered particular cases of error correction.

Retrying an operation may be part of an error detection mechanism when used in conjunction with a counting or time-out scheme. It may constitute an error correction when it is used to overcome a transient error. In both cases it is a mechanism used after the occurrence of a fault.

Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

{Saving, restoring, recovering or retrying}
Definition statement

This place covers:

The techniques covered by G06F 11/1402 imply at least an attempt to correct an error. They do not cover the detection as such, which may be found in G06F 11/1497 or G06F 11/1479.

Special rules of classification

Classification of documents relating to snapshots is done as follows :

  • documents describing the use or creation of snapshots to deal with the detection or correction of errors are classified in G06F 11/00, and normally in subgroups of G06F 11/1402.
  • documents describing other uses of snapshots (or creation of snapshots for such purposes) are not classified in G06F 11/00. They are classified in G06F 17/30 or G06F 3/06 unless the specific use is provided for in another classification place.
  • General-purpose treatment of snapshots (e.g. management of valid snapshots, determining not needed snapshots, storage optimisation, ...) is dealt with in G06F 17/30 if the snapshots are on file level. If the snapshots are volume-based snapshots, they are dealt with in G06F 3/00 since they concern the management of storage space in this case.
Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Persistent data

Data which are still relevant after a normal power off/ power on cycle or a logoff/logon procedure. Typically, the user determines when such data should be modified or destroyed (since they are not relevant anymore).Thus, persistent data is not equivalent to data that is stored in a non-volatile manner, the latter merely giving an indication of the type of memory/storage used to save the data. Non-volatile data does not need to be persistent, but persistent data is always non-volatile.

{at machine instruction level}
Definition statement

This place covers:

Measures taken inside the processor or relating to individual processor instructions. To implement these measures, additional hardware (such as registers) can be used. A necessary condition to classify here, is that the operating system is unaware of the measures taken.

{at system level}
Definition statement

This place covers:

The solution of a specific problem related to the functioning of the computer system(s) as a whole in contrast to a particular application functionality. It is intended to cover firmware level (e.g. BIOS), OS level, file system level and/or utilities.

Relationships with other classification places

This group is NOT intended to include database specific techniques. Note that if the solutions in these groups involve the use of particular software techniques covered in G06F 11/1479 /low, the documents should be classified there as well. See e.g. the comment under G06F 11/1438 relating to additional classification in G06F 11/1479.

{Boot up procedures}
Definition statement

This place covers:

Restricted to correction (attempt) of errors during or using the boot process.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Booting in general

Reboot as part of upgrading to verify the successful upgrade

{Reconfiguring to eliminate the error (group management mechanisms in a peer-to-peer network H04L 67/1044)}
Definition statement

This place covers:

Reconfiguration meaning that the system undergoes modification of the components that make up the system or their arrangement in response to an error being detected. The components can be either hardware or software components.

Example:

  • The system switches to a minimal video driver in case the normally used video driver does not give any image anymore.

Counterexamples:

  • redistributing the load on individual processors of a multiprocessor system in an overload condition
  • masking faults by reconfiguring redundant hardware (e.g. making a standby component primary, changing the role of disks in a mirrored pair, ...)
References
Limiting references

This place does not cover:

Software update in general

Checking for a new version of software when a failure occurs with the current version

{by reconfiguration of paths}
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Isolating a faulty entity in a communication network

{during software upgrading}
Definition statement

This place covers:

Potential to recover from errors during or after software update or upgrade or installation processes. Also applies when this process is performed by a specific update/install software or even by the application itself.

{using file system or storage system metadata}
Definition statement

This place covers:

There is redundancy in the metadata used to access a given stored data item.

Examples are :

  • File systems having redundant FATs or redundant tuples
  • Redundant CMOS/BIOS data defining the disk layout

Counterexamples are :

  • Retry a read from a disk sector by the disk controller when the read fails. This should be classified G11B 20/00
  • Retrying the disk I/O request by the CPU. This should be classified in
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

File management in general

{Restarting or rejuvenating}
Definition statement

This place covers:

The act of restarting a software module (e.g. an application, but not the complete OS, because this would imply a boot process which is covered in G06F 11/1417) either to recover from an error or in order to prevent an error (the latter being rejuvenation). The restarting or rejuvenating may be based on a previous state saving of the software module. Usually, this is based on a previously saved dynamic state of the software module. The dynamic state of a software application or process or task includes at least some of stack, heap, open files, etc. information, from which the application can later continue processing. Continuing from a previously saved state without full application restart is also covered by this group.

Special rules of classification

If the application restart or rejuvenation mechanism is implemented in an OS or middleware layer outside the application, this aspect is to be additionally classified in G06F 11/1482.

{Resetting or repowering}
Definition statement

This place covers:

Measures taken out of a normal operating mode (after boot) but before abnormal termination of the system to enable a machine to continue processing from a defined state after a re-initialisation (reset or re-powering) of the machine. Example: power is monitored, when voltage drop is detected, the RAM is saved to disk. After power restore, RAM is reloaded from disk. Or, battery used to temporarily backup the RAM during a (short) power outage.

Without error see G06F 1/3203.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Means for saving power

Special rules of classification

If a spare power supply is used, additionally G06F 11/2015 must be given (either as additional or invention, depending on the circumstances)

{Transmit or communication errors}
Definition statement

This place covers:

Examples :

  • printer or disk I/O retry by the Operating System.
  • Repeated requests by a client to the server
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Detecting errors in the information received

Error detection mechanisms part of a communication protocol

Special rules of classification

Documents should only be classified here when they concern transmit or communication errors and where the mechanisms used are not part of a communication protocol and no other group of G06F 11/14 and subgroups or G06F 11/16 and subgroups applies.

{Point-in-time backing up or restoration of persistent data}
Definition statement

This place covers:

Backup done either on file or data block level. Covers, backing up of any type of file, independent of the data it contains.

Note: Due to considerable overlap in technology, backups and data backup systems frequently are confused with archives and fault-tolerant systems. However:

  • Backups differ from archives in the sense that archives are the primary copy of data whereas backups are a secondary copy of data.
  • Data backup systems differ from fault-tolerant systems in the sense that data backup systems assume that a fault will cause a data loss event, whereas fault-tolerant systems do not.

The scope of this group also covers ensuring that the data to be saved (as backup copy) is consistent (i.e. represents a meaningful state), especially if the copy is made of data within a distributed system.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Data replication

Mirroring

Data archiving

{Management of the data involved in backup or backup restore}
Definition statement

This place covers:

All operations related to data management which are used for the backup data.

Examples of management of the data that is backed up :

  • managing versions of backups
  • formatting for compatibility with different systems
  • consolidation of backed up data
References
Informative references

Attention is drawn to the following places, which may be of interest for search:

File management in general

Special rules of classification

Documents relating to authorisation control or data security of the backups should also be sent to G06F 21/00 for classification

{by selection of backup contents}
Definition statement

This place covers:

  • any determination of what data should be subjected to backup (e.g. what type of data, which origin of data, according to criticality of the data, ...)
  • determining the necessity to include particular data (e.g. based on whether the data has changed)
  • in what form the data should be backed up (e.g. incremental backup, full backup, differential backup, ...)
{using de-duplication of the data}
Definition statement

This place covers:

all techniques that are used to detect multiple copies of data items (e.g. files, data blocks, strings of data, ...) and to use this knowledge to optimize the backup (e.g. by not retransmitting the detected item, by not storing the detected item twice,...).

This is irrespective of whether the multiple copies are between (backups of) data at different times or between (backups of) different data items having a part in common or between (backups from) different hosts.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Redundancy elimination in general

{Hardware arrangements for backup}
Definition statement

This place covers:

subject-matter where the hardware arrangement is affected by its use as backup system or where a particular system arrangement is proposed for backup. However, this does not imply that a particular hardware component must be physically modified for backup purposes

The following are some examples :

  • additional (temporary) memory or storage is used to enable efficient writing on the backup medium
  • storage which is configured to automatically perform a backup, when connected to a system to be backed up.
  • A specific type of hardware being used for backup

A distributed architecture where some processing nodes are dedicated to particular backup functions

{Management of the backup or restore process}
Definition statement

This place covers:

All operations related to the management of the backup process.

Examples are :

management of backup process :

  • how to make the backup process faster
  • avoiding data restoration by unauthorized persons
Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

Documents relating to authorisation control or data security of the backups should also be sent to G06F 21/00 for classification

{for networked environments}
Definition statement

This place covers:

Everything relating to arrangements in which the distributed architecture is of importance for the backup. Examples: Optimizing bandwidth, selecting machines (source or target) for backup, time multiplexed scheduling of backup clients, hierarchical distribution of backup control functionality to different networked machines.

{to make the backup process non-disruptive}
Definition statement

This place covers:

All subject-matter dealing with techniques of limiting the impact of the backup process on normal operations, e.g. by minimizing the backup window.

{Backup restoration techniques}
Definition statement

This place covers:

Problems relating to restoring data from a backup using a backup/restore application (in contrast to data movement services of an OS). Examples: Finding and ordering the necessary tapes, handling a target format that is no longer the same as the original one, target system configuration has changed and new locations must be determined, improving restore efficiency.

Relationships with other classification places

Data migration from one machine to another one

{involving logging of persistent data for recovery}
Definition statement

This place covers:

Logging techniques or the usage thereof for the purpose of attempting to recover from errors.

Ensuring that a log contains all necessary data to enable a restore.

Maintenance of the logged data (e.g. pruning obsolete entries to reduce the recovery time).

References
Limiting references

This place does not cover:

Journaling used as a data transmission mechanism for asynchronous mirroringCreating a consistent baseline of stored data for recovery to avoid long log processing at restore time is to be classified in other parts of

Journaling for asynchronous mirroring

Informative references

Attention is drawn to the following places, which may be of interest for search:

Logging in general

Logging in database systems

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Logging

recording physical or logical changes to stored persistent data to allow a system to recover from crashes or other errors and maintain the stored persistent data in a consistent state.

Journal

is a chronological record of data processing operations. It is considered equivalent to logical logging.

{in transactions (G06F 17/30286 takes precedence)}
Definition statement

This place covers:

general recovery techniques of transactional systems; detailed techniques of transaction processing in database systems (e.g. ensuring ACID properties of updates in database systems) are not classified here.

Attempting to recover from errors within transactions that create/update/modify data. The term transaction is understood broadly.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Error recovery for (main) memory accesses implemented as transactions

Transactional file systems

Making database transactions atomic

Special rules of classification

Documents being classified here that concern transactions in database management systems should be sent to G06F 17/30286 for classification as well.

{Generic software techniques for error detection or fault masking}
Definition statement

This place covers:

All techniques implemented by software means, i.e. where the fault tolerance does not result from the hardware and is not bound to a particular redundant hardware architecture.

Software architectures and structural approaches independent of the particular problem solved or function that is achieved. As a consequence, documents describing such technique for a particular purpose or hardware architecture as covered by the subgroups of G06F 11/14 and G06F 11/16 should be classified there as well. As a particular example for this see the comments under G06F 11/1482 relating to additional classification in G06F 11/1438.

Documents where the kind of fault tolerance used (active-active, voting, active-passive, ...) is fixed by the hardware architecture and cannot be influenced by the software, should not be classified in this group.

Examples are: Fault-tolerance using data-diversity (e.g. by using different equivalent input data sets for each retry of a function), corrective actions e.g. following a plausibility check. Other examples include measures taken before run time (e.g. duplication of instructions for comparison at compile time) or robust data structures (see XP745785).

Counterexample : the operating system for a Tandem Himalaya system will not be classified here, because it is bound to a hardware architecture that provides the fault tolerance and it does not employ any of the generic techniques covered by G06F 11/1479.

{by means of middleware or OS functionality}
Definition statement

This place covers:

There is a software layer (on top of the operating system or integrated in the operating system) which makes applications which are not fault-tolerant run in a fault tolerant way. Typically, this is done by scheduling requests of the application more than once.

A typical example of this is fault tolerant cluster software.

Another example is an OS that detects a faulty process and creates a further copy of the same process on the same processor (but potentially in another memory area).

Special rules of classification

If the layer implements an application restart or rejuvenation mechanism, this feature is to be additionally classified in G06F 11/1438.

Documents where there is necessarily some hardware redundancy, get an Indexing Code as well in the HW redundancy groups.

Documents which describe said middleware/OS technique in combination with only one redundant hardware architecture always go into the G06F 11/16 and subgroups, but where said technique is explicitly suitable for other redundant hardware architectures, they are classified in G06F 11/1482 as well.

The restart related aspect of the second example is to be classified additionally in G06F 11/1438.

Note that G06F 11/1482 as such does not imply failover mechanisms, although the underlying hardware becomes redundant because of the software layer. Hence, this hardware redundancy aspect requires classification as well, in this particular case in G06F 11/2023 (example docs: US2003018927, US2003105852).

{using N-version programming}
Definition statement

This place covers:

For error detection the output of multiple versions (typically based on different source codes) of the application code or portions thereof are compared or voted (note that this is different from an acceptance test as defined in G06F 11/1489). This can be in different programming languages, different compilers or implementation of alternative algorithms. The versions may be executed sequentially, concurrently or in parallel on different hardware (thereby making the latter redundant).

{through recovery blocks}
Definition statement

This place covers:

For error detection an acceptance test (mostly a plausibility check or a limit on execution time) is performed on critical code blocks. If the test is not passed, the output of another execution of the same or an alternative version of the block is used for recovery. The executions may be sequential or parallel. Note that an acceptance test is performed using the output of only one of the executions.

Special rules of classification

If the other execution is systematically performed on the same hardware, this has to be additionally classified in G06F 11/1497.

{by run-time replication performed by the application software}
Definition statement

This place covers:

In contrast with G06F 11/1482, here the redundancy is inherent in the application itself. Thus, the application does not rely on any other layer to be fault-tolerant. The redundant portions are necessarily identical, since otherwise the redundancy is not realized at runtime, but is hard coded.

References
Informative references

Attention is drawn to the following places, which may be of interest for search:

Replication implemented at OS- or middleware level is covered by

N-modular type

Details of time redundant execution on a single processing unit

{N-modular type}
Definition statement

This place covers:

Using comparison or voting for the concurrently running replicas of the application software.

{Details of time redundant execution on a single processing unit}
Definition statement

This place covers:

A piece of software (module, function, complete application, ...) is always executed two or more times sequentially or concurrently (e.g. as threads) on a single processing unit in order to address transient faults. In particular, this groups covers those aspects relating to the provision of the identical input to all executions of the software. When more than two execution are foreseen this can be used for error correction (not only detection). In particular, this group covers the techniques used to instantiate multiple executions of redundant software, the temporary storage of intermediary results or the duplication of contexts for each instance, as well as the measures taken for the subsequent error detection or fault masking. Note that this group also covers (non-redundant) hardware support for time redundant execution and, thus, cannot be a subgroup of G06F 11/1479.

Error detection or correction of the data by redundancy in hardware
Definition statement

This place covers:

  • Systems where hardware redundancy is used to detect errors or to correct errors based on the output produced by the redundant components.
Relationships with other classification places

There are three types of hardware redundancy that can be found here:

The hardware redundancy is used for error detection only: such systems imply that there are at least (and normally only ) two redundant components, which are both active, the output of which is compared (G06F 11/1608, G06F 11/1629). Disagreement indicates an error.

The hardware redundancy is used for error detection and correction: such systems imply that there are at least three redundant components, which are all active, the output of which is voted. In the presence of an error the majority of correct outputs is used to correct the error. Since this is done without reconfiguration of the system, i.e. by ignoring the erroneous component(s), this is called passive fault masking (G06F 11/18).

The hardware redundancy is used for error correction only: such systems imply that there are at least one active component and at least one passive component suited to replace the active one in case the latter is failing. The detection of the failure is not (necessarily) based on hardware redundancy, however the correction of the error is. It requires a reconfiguration of the system as a result of which the functionality of the failing component is switched over to a spare (failover, takeover). This is called active fault masking (G06F 11/20).

In this context, voting and comparing are decision processes as to the correctness of the output of the system. This is in contrast to membership determination processes (which may also use majority building), which concern decisions on what the configuration of a system should be.

Testing of redundant computer hardware justifies an Indexing Code in appropriate subgroups of G06F 11/16. Testing of non-redundant but identical computer hardware (e.g. on a wafer) using comparison or voting techniques is G06F 11/22 only. Verifying components against a "golden master" is neither run-time nor fault-masking, this it is not G06F 11/16 but G06F 11/22 or G01R 31/00.

The subgroups fall apart in 2 types :

  • "architectural groups", i.e. groups that specify constructional elements (i.e. G06F 11/1608 and G06F 11/1629)
  • "functional groups", i.e. groups that define a particular functionality that is independent of the architecture (i.e. G06F 11/1666 and G06F 11/1675). These groups may be relevant for any type of hardware redundancy or fault masking.

Redundant hardware is a prerequisite to correct permanent (hardware) faults, but is equally successful with transient faults. Thus, G06F 11/18 and G06F 11/20 provide mechanisms that can successfully deal with both types of faults.

  • Active fault masking implies a reconfiguration and, thus, a retry in the new configuration for the operation (or set of operations) that encountered the error. Otherwise there would not be error correction. Hence, to avoid double classification of (at least) all documents in G06F 11/20 there is the precedence rule under G06F 11/14.

Examples:

  • Not every (symmetric) multiprocessor is redundant per se, because criteria (A) is not necessarily true. However, additional error detection and reconfiguration functionality typically implemented in software (OS or application level) could be used to make processors operate redundantly.
  • A point-to-point connection that initialises to use as many parallel lanes as possible and automatically reconfigures itself to use less lanes following an error implies redundant communication media, because criteria (A) and (B) are both true.

See definitions in G06F 11/2002 and subgroups regarding redundancy in communications.

Special rules of classification

In this group the use of the Indexing Codes G06F 2201/00 and lower is mandatory.

Documents dealing with replication are classified in G06F 11/16 and subgroups (in particular in G06F 11/2094 and (G06F 11/2097 or G06F 11/1658) only when the purpose of the replication is for error handling or error detection. If the use is another one (e.g. performance or load balancing) or is not disclosed, the document should be classified in G06F 17/30067 instead.

Some systems having a set of equivalent/similar hardware resources all used under normal conditions may be reconfigured in response to an error to use only a subset of these resources while still providing the same full logical functionality, however possibly with degraded performance.

In order to decide where such documents are to be classified, the following criteria are used:

  • (A) If a reconfiguration mechanism is used following the error detection, we are in the presence of error correction using active fault masking.
  • (B) If said mechanism is able to correct permanent hardware faults, this implies the presence of some form of redundancy in hardware.

If both criteria apply, the subject-matter is for G06F 11/20: A AND B => G06F 11/20.

Note in particular that:

G06F 11/14 (redundancy in operation) provides mechanisms that can ONLY deal successfully with transient faults.

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Redundant hardware

additional hardware for performing the same function as another hardware part, provided that in faultless operation you could renounce on either hardware parts of the system without loosing functionality.

{where the fault affects the clock signals of a processing unit and the redundancy is at or within the level of clock signal generation hardware}
Definition statement

This place covers:

  • Systems with multiple clock generating components with active or passive fault masking, i.e. where the system is continuously clocked even in the presence of failing clock generators.
  • Single clock generators that are fault tolerant in themselves, e.g. by comprising multiple oscillators.
  • Arrangements that only detect clock faults based on redundancy at or in the clock generating level (typically by comparing signals output by two clock generators).
  • The symbols G06F 11/1608, G06F 11/18 and G06F 11/20 are to be used where appropriate to capture the type of mechanism implementing the clock fault tolerance, if no EC symbol in the respective field is already given.

Note that this group does not require, that the clocked system itself is fault-tolerant.

References
Limiting references

This place does not cover:

Clock signal generation circuits/techniques as such even when redundancy is involved within such circuits

Appropriate clock signal distribution on ICs or between discrete components

Clock (phase) synchronisation in general, even when used to ensure the synchronous operation of multiple processors

Measures taken at clock level to achieve lockstep operation of redundant processing components

Time of day; time pieces

Oscillators, pulse generators or clock synthesizers

Oscillators, pulse generators or clock synthesizers if a loop in involved

Synchronisation of processor clocks representing time (time of day, logical/virtual time, real time clocks; NTP, PTP, UTC)

Informative references

Attention is drawn to the following places, which may be of interest for search:

Fault-tolerant synchronisation of clocks representing time

Error detection by comparing the output signals of redundant hardware

Checking static stores for correct operation is

Glossary of terms

In this place, the following terms or expressions are used with the meaning indicated:

Clock signal

designates the common periodic square-waved signal on which synchronous digital components base their operations. This signal does not represent any absolute or relative real, logical or virtual time value (although such time may be derived therefrom by counting periods of this clock signal).

Computing-related hardware the run-time behaviour of which is not controlled by software (e.g. ALUs, counters, decoders, ...). As soon as the redundant hardware under consideration, the output of which is compared, comprises a software programmable processor ((micro-)controller, CPU, microprocessor, ...), this should go to the G06F 11/1629.

Comparing is understood largely , i.e. it encompasses coherency checks (are the compared results similar enough to be considered the same or equivalent?) not only identity tests.

Processor(s) comparing the input from redundant sources (like buffers) are G06F 11/1608 as long as they do not compare their own results. The latter would have to be additionally classified in G06F 11/1629.

{Error detection by comparing the output of redundant processing systems}
Definition statement

This place covers:

This group is intended to contain systems in which the redundant components are programmable (hardware) processors, the runtime behaviour of which is defined by software/firmware.

Comparing is understood largely , i.e. it encompasses coherency checks (are the compared results similar enough to be considered the same or equivalent?), not only identity tests.

Relationships with other classification places

FPGAs are programmable in respect of their configuration only. In general, the resulting run-time functionality thereof does not constitute a software controllable processor, thus systems comprising redundant FPGAs, the functionality of which is not run-time programmable, should be in 16B, as long as they form part of computer hardware.

Comparisons of input values are not to be classified here. They may, however, be for G06F 11/1608 as long as said input is produced by redundant sources. If such a comparison is used to detect errors in the transmission of data, this should be H04L 1/00. Redundant sources like sensors may be G05B rather than G06F (see also comments of G06F 11/1616).

{using mutual exchange of the output between the redundant processing components}
Definition statement

This place covers:

This group is intended to comprise systems in which there is no comparator hardware. Instead, all redundant components send their respective output results to each other and each perform the comparison (in software) between their own output and the one(s) received from the other redundant components. This would cover processors exchanging results via a local (processor) bus as well as distributed system which communicate the results via LAN or other type of network.

Relationships with other classification places
  • If there are more than 2 redundant units, this group applies only as far as there is no fault masking (this would be G06F 11/18).
  • Redundant hardware comparators distinct from but directly associated with the redundant processing components go into G06F 11/1645.
{using additional compare functionality in one or some but not all of the redundant processing components}
Definition statement

This place covers:

  • Consists of systems often denoted as master/checker in which there is no separate comparator unit. Instead, one or some of the redundant unit(s) (the checker(s)) do(es) additional work to perform the comparison, thereby detecting erroneous behaviour and checking the system for correct operation. The additional compare functionality may be implemented in hardware on the corresponding processing component(s), or in software executed by the corresponding processing component(s).
  • Master/checker type architectures in which two processors operate in clock lockstep, where the checker compares the values driven by the master with its own corresponding internally present by otherwise disabled outputs. If a discrepancy is detected, the checker produces an error signal. See the glossary for citations of example master-checker structures. Note that this type of architectures also falls in the G06F 11/1654.
  • Master/checker architectures where the checker is limited in processing functionality with respect to the master, even though this is not absolutely in line with our definition of hardware redundancy.
{where the comparison is not performed by the redundant processing components}
Definition statement

This place covers:

Here one or more hardware units separate from the redundant components are used to compare the results produced by the redundant components. Further details of subgroups

G06F 11/1645 and the comparison itself uses redundant hardware

This covers architectures in which there are comparator units (typically but not necessarily respectively associated with but) distinct from each one of the redundant processing components. The comparators are considered redundant when they perform the same comparison on (copies of) the same signals/data.

{with continued operation after detection of the error}
Definition statement

This place covers:

Documents in which an additional mechanism is provided to determine which one(s) of the redundant component(s) shall survive after the detection of the error. This may (but need not) involve a determination of which component is correct, in which case this redundant component can be used to correct the error in the other one(s) such that all redundant processing components can finally continue their operation.

Relationships with other classification places

However, since they are not based on a majority decision, (otherwise they would be G06F 11/18, see in particular G06F 11/181), the determination of the surviving component(s) is usually not done using redundancy in hardware. Rather, some diagnostics or simple priority rules, possibly based on prior behaviour are used.

Special rules of classification

Techniques in this group may use active fault masking, passive fault masking (i.e. ignoring the faulty component), or other techniques like retry. If these are described they should get an Indexing Code in the respective field as well.

{where the output of only one of the redundant processing components can drive the attached hardware, e.g. memory or I/O}
Definition statement

This place covers:

  • Here one of the processing components is usually called the "master", the other(s) may be denoted as slave(s), checker(s), or shadow(s). The master's: outputs drive the system. The slave's: outputs are used for comparison but are otherwise disabled from reaching other components of the system.
  • Architectures in which both processors have a master and a slave role but for distinct parts of the system, i.e. for different types of output.
Relationships with other classification places

There may be an overlap of this group with G06F 11/1637 when the slave itself also performs the comparison, thereby making it a checker as well.

Special rules of classification

This group should only be used when there effectively is an asymmetry in the role of the redundant processors. On the contrary, the mere statement that a comparator or bridge or the like selects the outputs of one the processors to drive the attached components does not suffice to justify a different role of the processors.

{Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit}
Definition statement

This place covers:

The following types of data transfer activities (possibly using data replication) from a memory, the content of which is assumed to be good, to a one that is not yet current (note that the concerned memories do not need to be themselves redundant):

  • sporadic resynchronisation processes used to reintegrate a redundant component into an active/active system, such process being started in an attempt to correct a fault for instance by rebooting a failing component or by replacing it.
  • synchronisation processes occurring at start-up of some redundant active/active systems in which the redundant components have to negotiate when they are all ready to enter the lockstep mode of operation.
  • initialisation processes used to make a redundant component ready to work as a stand-by in active/passive systems.
Special rules of classification

Documents in this group describing techniques in the context of active/passive systems should additionally have at least one Indexing Code in the G06F 11/20 (see also the comments in G06F 11/2097).

{the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F 11/2082; rebuild or reconstruction of parity RAID storage G06F 11/1008)}
Definition statement

This place covers:

  • Initialising data of a (newly activated) spare disk, provided this is not a mirror disk (the latter being in G06F 11/2082).
  • Typical examples for this are the preparation of file system or database replica.
{where the redundant component is memory or memory area}
Definition statement

This place covers:

  • The term memory is meant to comprise solid state devices used as main memory which is directly addressable by the associated CPU, as well as non addressable solid state internal memories (e.g. registers, buffers). It does however not need to be RAM.
  • Redundant caches and main memory mirroring (in which case the Indexing Code G06F 11/20 should be given). One of the following Indexing Codes should be used where appropriate to better characterise the fault detection or correction mechanism involved: G06F 11/18, G06F 11/20.
  • Error detection (or fault masking) using data replicated in different area