The disclosed embodiments relate to a method and apparatus for providing notification. The apparatus may comprise a plurality of completion queue handlers associated with a communication device. Each of the plurality of completion queue handlers may be associated with a plurality of processes. At least one completion queue may be associated with at least one of the plurality of completion queue handlers.

This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
In the field of computer systems, it may be desirable for information to be transferred from a system memory associated with one computer system to a system memory associated with another computer system. Queue pairs ("QPs") may be used to facilitate such a transfer of data. Each QP may include a send queue ("SQ") and a receive queue ("RQ") that may be utilized in transferring data from the memory of one device to the memory of another device. The RQ or the SQ may be associated with a completion queue ("CQ") or different CQs. To notify the process that an event has completed, a CQ handler may be utilized to interact between the CQ or CQs and an application or consumer. For example, a CQ handler may notify the consumer that an operation has been completed with the information in the CQ relating to that event.
However, in a computing environment, the number interconnects and speed of the transactions continue to increase. Within a network interface, a single CQ handler may be used for that interface. The single CQ handler may be a bottleneck when for a large set of QPs. This may result in skewed performance, which is exhibited as erratic or inefficient system behavior. With multiple network interfaces or a large set of QPs on an interface, these inefficiencies may degrade the overall system performance.

Method and apparatus for providing notification via multiple completion queue handlers

Hewlett-Packard Development Company, L.P.


In an optical access network using an optical switching device, a 2×1 optical splitter in the uplink and downlink directions is eliminated to extend the transmission distance between the OLT and the ONU. An optical switching device includes a downlink optical switch element for switching a downlink optical signal sent by an OLT, an uplink optical switch element for switching an uplink optical signal sent by a plurality of ONU, an O/E for converting a downlink optical signal to a first electrical signal, an E/O for converting the first electrical signal to a downlink optical signal and inputting the downlink optical signal to the downlink optical element, an O/E for converting an uplink optical signal output from the uplink optical switch element to a second electrical signal, and an E/O for converting the second electrical signal to an uplink optical signal and sending the uplink optical signal to the OLT.

1. Field of the Invention
The present invention relates to a configuration of an optical switching device used in an optical access network. The present invention relates to a technique that eliminates a 1×2 splitter, which has been needed in an optical switching device, and reduces insertion loss of the optical switching device. Further, the present invention relates to a technique that compensates the loss between an optical switching device (OSM (Optical Switching Module)) and a center device (OLT (Optical Line Unit)), and extends the transmission distance between the center device and a remote device (ONU (Optical Network Unit)). The present invention also relates to a technique that achieves with extremely high accuracy the delay, which is required for downlink switching, at an electrical level instead of the conventional optical level.
2. Description of the Related Art
Japanese Patent Application Laid-Open No. 7-177098 (patent document 1) discloses a technique related to an optical access network configured into a tree-shape with one center device (OLT), a plurality of remote devices (ONU), and one optical switch connected between the OLT and an ONU.
In patent document 1, a time slot with a fixed length acts as a unit of switching. The ports are periodically connected in the downlink direction. In the uplink direction, transmission is performed after providing a delay time so that all the ONUs have a maximum delay time and the ports are periodically connected.
IEEE802.3ah™/D.3.3, "Carrier Sense Multiple Access with Collision Detection (CSMA/CD) access method and physical layer specifications," Sep. 7, 2004 (non-patent document 1) discloses a technique related to an optical access network forming a tree-shape with one center device (OLT), a plurality of remote devices (ONU), and at least one optical splitter connected between the OLT and the ONU.
Generally, such optical network is referred to as PON (Passive Optical Network), and in particular, the PON described in non-patent document 1 is called E-PON since Ethernet (registered trademark) frame is used, or GE-POM since the speed on the transmission path is gigabits.
An optical access network forming a tree-shape with one center device (OLT), a plurality of remote devices (ONU), and at least one optical switching device (OSM) connected between the OLT and the ONU is disclosed in Hiromi Ueda, Takumi Nomura, Kunitetsu Makino, Yoshinori Tsuboi, Hiroaki Kurokawa, and Hiroyuki Kasai, "Proposed New Optical Access Network Architecture-Access Networks with Optical Packet Switching", IEICE technical report CS2004-253 (2005-03) (non-patent document 2) and Takumi Nomura, Chikashi Itoh, Hiroaki Kurokawa, Hiromi Ueda, Toshinori Tsuboi, and Hiroyuki Kasai, "Architecture of optical switching module in new optical access network", IEICE technical report CS2004-254 (2005-03) (non-patent document 3).
A conventional OSM described in non-patent documents 2 and 3 is shown in FIG. 1. The OSM 31 includes a downlink optical switch element 10 having one input port and n output ports, and an uplink switch element 11 having n input ports and one output port. The input port of the downlink optical switch element 10 and one output port of the optical switch element 11 become one port of the OSM 31 by wavelength multiplexing, and are connected to the OLT through one optical fiber. Furthermore, output port k (k=1, 2, 3, . . . , n) of the element 10 and input port k (k=1, 2, 3, . . . , n) of the element 11 become port k (k=1, 2, 3, . . . , n) of the OSM 31 by wavelength multiplexing, and is connected to an ONU through one optical fiber.
The control of switching of the element 10 and the element 11 of the OSM 31 is performed with a signal that is divided by the 1×2 splitter (an optical splitter 60) and converted to an electrical signal. The 1×2 splitter is disposed before the input port of the element 10 and divides an electrical signal from the center device. The other optical signal is input to the element 10. The 1×2 splitter (optical splitter 60) is also arranged next to the output port of the element 11 so that packets can be transmitted from the OSM 31 to the OLT.
For more detail, the switching of the downlink optical switch element 10 of the OSM 31 is performed with an LLID (Logical Link Identifier), which is the identification number of an ONU, and the packet length. The LLID and the packet length are included in a packet obtained from the electrical signal that is converted from the optical signal of the center device (OLT). The switching of the uplink optical switch element 11 is performed with an LLID of the ONU of the destination, the transmission start time and the transmission duration of the ONU. The LLID, the transmission start time and the transmission duration are included in the GATE message obtained from the electrical signal converted from the optical signal of the center device (OLT). An output port of the element 10 and an input port of the element 11 (the port selection of the OSM 31 on the ONU side) are selected based on the LLID. As described above, the 1×2 splitters are arranged both in the downlink direction and in the uplink direction.
Among the content of non-patent document 1, the packet configuration, the transmission control of an OLT over an ONU, and the discovery operation of the OLT over the ONU will be described below. The term "packet" is consistently used herein but the content of explanation will not change even if the term "frame" is used.
The packet configuration is shown in FIG. 2. A packet mainly includes a preamble section, a MAC (Media Access Control) header section, a payload section, and an error detecting section FCS (Frame Check Sequence).
The preamble section includes a code 0×55 (01010101) for achieving bit synchronization, an LLID corresponding to the identification number of an ONU, a code 0×d5 (11010101) called SLD (Start of LLID Delimiter) for detecting an LLID, and a CRC (Cyclic Redundancy Check) for detecting bit error of the SLD and the LLID.
The MAC header section includes a destination MAC address (DA: Destination Address), a source MAC address (SA: Source Address), and length/type (L/T).
The payload section contains data of a user and data for the control of the network. There are defined five types of packets for the control of the network: namely, GATE message, REGISTER_REQ message, REGISTER message, REGISTER_ACK message and REPORT message. A time stamp is defined commonly for these messages.
The GATE message is used in the transmission control for an ONU. In the payload section of the GATE message, information such as an identification number (Opcode) of the GATE message, the time information (Time Stamp)) for distributing the time of the OLT, a discovery flag indicating whether the packet is for a discovery operation, a transmission start time (Grant Start Time) of the ONU, a transmission duration (Grant Length) of the ONU and so on are written.
The discovery operation is that an OLT provides an LLID to an ONU when a new ONU is connected or when the power of the ONU is turned on after the power is once turned off, and then a round-trip time between the ONU and the OLT is measured for the first time. The discovery operation is periodically performed to enable the provision of the LLID and the measurement of the round-trip time even if a new ONU is connected or the power of the ONU is turned off and then again turned on. The interval is determined by a system designer.
The discovery operation is shown in FIG. 3. The GATE message is transmitted from the OLT at the beginning of the discovery operation. This GATE message targets the ONU to which LLID is not given, where the LLID used therefor is that defined for broadcasting. Furthermore, the discovery flag is set to "1" and the multicast is used for the destination MAC address. Such GATE message is hereinafter referred to as "discovery GATE message".
In the PON (Passive Optical Network), the discovery GATE message transmitted from the OLT is branched by an optical splitter, and reaches all ONUs connected to the splitter. When unregistered ONUs that are not yet given an LLID receive the discovery GATE message, they all at once transmit REGISTER_REQ message to request for registration to the OLT. In order to avoid the REGISTER_REQ messages from colliding in the interval between the optical splitter and the OLT, each unregistered ONU waits for a random time starting from the transmissions start time td2 written on the discovery GATE message, and then transmits the REGISTER_REQ message having the destination MAC address be the MAC address of the ONU.
When the OLT receives an REGISTER_REQ message, the OLT acquires the MAC address of the ONU from the REGISTER_REQ message, newly assigns an LLID, and manages the relationship between the MAC address of the ONU and the LLID. The OLT transmits the REGISTER message with the LLID written in the information region (payload region) of the packet to notify the ONU of the LLID assigned to the ONU. The ONU receives the message and obtains the LLID, and thereafter, the ONU transmits packets with the LLID given to the preamble section of a packet. The ONU also determines whether the packet sent from the OLT is for itself based on the LLID in the preamble section. If the LLID in the preamble section and the LLID written in the data region of the REGISTER message must be specifically distinguished, the latter will be described as LLID_Reg.
Subsequently, the OLT specifies the ONU with the LLID, and the GATE message with the transmitting MAC address being "multicast" and the discovery flag being 0 is transmitted to measure the round-trip time (called ranging). Such GATE message is hereinafter referred to as "ranging GATE message". After receiving the ranging GATE message, the ONU corresponding to the LLID acquires the time information (Time Stamp) tr1, the transmitting start time (Grant Start Time) tr2, and the transmitting duration (Grant Length) Tr2 written on the ranging GATE message, sets the time information tr1 for the clock of the ONU, and starts transmitting the REGISTER_ACK message at the transmitting start time tr2 of the clock to the OLT and continues it for the transmitting duration Tr2. It should be noted that tr2, written on the time information (Time Stamp) of the REGISTER_ACK message, is defined by the clock of the ONU. If the OLT receives the REGISTER_ACK message at time tr3 at its clock, the round-trip time RTTa between the OLT and the ONU can be obtained from tr2 written on the relevant message with RTTa=tr3−tr2. The measurement of the round-trip time is performed by the OLT and the registration of the ONU is completed.
In order to perform the transmission control of the ONU whose registration is completed, the OLT gives the corresponding LLID to the ONU, and uses the GATE message with the transmitting MAC address being the MAC address of the ONU and the discovery flag being 0. Such GATE message is hereinafter referred to as "transmission control GATE message". The OLT investigates the transmission request of the ONU based on the REPORT message requested by the transmission control GATE message. Simultaneously, the OLT measures the round-trip time RTTa=t3−t2 with the transmission start time t2 written on the transmission control GATE message and the arrival time t3 of the REPORT message, and updates the measured time.
However, the above-described conventional examples have the following problems.
In the optical access network configured into a tree-shape with one center device (OLT), a plurality of remote devices (ONU), and at least one optical switching device (OSM) connected between the OLT and an ONU, the transmission distance between the OLT and the ONU is determined by the insertion loss of the OSM.
However, the 2×1 optical splitters (an optical splitter 60) are used in the downlink and uplink direction in the conventional OSM as shown in FIG. 1. The insertion loss of the 2×1 optical splitter is about 4 dB. This is added to the insertion loss of the OSM 31, and thus the insertion loss cannot be made lower than 4 dB in the entire OSM 31 even if the insertion loss of the elements 10 and 11 is reduced. Since the loss of the 1310 nm band single mode fiber used in the optical access network is about 0.34 dB/km, 4 dB is equivalent to 11.8 km. If the 2×1 optical splitter is removed from the OSM 31, the transmission distance between the OLT and the ONU can be extended by 11.8 km.
Furthermore, the delay section 51 of FIG. 1 can be realized by adjusting the optical level, for example, the length of the optical fiber, but the delay section 51 requires adjustment of nanosecond order, which is not always easy.

Optical switching device, optical access network, optical switching method, program, and recording medium


In some embodiments, the invention is a personal digital network (“PDN”) including hardware (sometimes referred to as Ingress circuitry) configured to transcrypt encrypted content that enters the PDN. Typically, the transcryption (decryption followed by re-encryption) is performed in hardware within the Ingress circuitry and the re-encryption occurs before the decrypted content is accessible by hardware or software external to the Ingress circuitry. Typically, transcrypted content that leaves the Ingress circuitry remains in re-encrypted form within the PDN whenever it is transferred between integrated circuits or is otherwise easily accessible by software, until it is decrypted within hardware (sometimes referred to as Egress circuitry) for display or playback or output from the PDN. Typically, the PDN is implemented so that no secret in Ingress or Egress circuitry (for use or transfer by the Ingress or Egress circuitry) is accessible in unencrypted form to software or firmware within the PDN or to any entity external to the PDN. Other aspects of the invention are methods for protecting content in a PDN (e.g., an open computing system) and devices (e.g., multimedia graphics cards, set top boxes, or video processors) for use in a PDN.

The expression "use restriction set" (or "Use Restriction Set") herein denotes the set of all use restrictions to which content (of a specific type) is subject. The use restriction set for specific content can include any number of use restrictions (e.g., one use restriction or many use restrictions). For example, a use restriction set for video and audio data that define a movie could prohibit transmission of the data outside a specified location (e.g., a single device or network) without proscribing any use of the data within the location. For another example, a use restriction set for video and audio data that define a movie could prohibit all uses of the data except for a single viewing of the movie (a single viewing of the video data and playback of the corresponding audio data) at a specified location (e.g., a single viewing and playback by a specific device or a device set of specified type, or a single viewing and playback by any device of a specified network).
The invention pertains to methods and apparatus for content protection in a personal digital network environment, where "personal digital network environment" ("PDNE") denotes the environment defined by a "personal digital network." The expression "personal digital network" ("PDN") herein denotes a network (of components, each comprised of some combination of hardware and optionally also software or firmware) capable of receiving content (e.g., digital image data, video data, or audio data) subject to a Use Restriction Set and configured to use the content in at least one way (and optionally, in many or all ways) not forbidden by the Use Restriction Set. An example of a PDN is a network installed in the network user's home, which includes digital video (and audio) storage, rendering (i.e., display or playback), and processing devices, and a personal computer (or other computing system having open architecture) that is capable of communicating with or controlling such devices. An example of a simple PDN is a computing system having open architecture (e.g., a personal computer with peripheral devices) that is configured to receive encrypted video and audio content (e.g., by reading the content from a high definition DVD or other disc) and to display a video portion of the content and play back an audio portion of the content. The content entering a PDNE can but need not be video or audio data, and can be or include data indicative of any information that can be stored digitally (such as but not limited to pictures, text, games, financial records, and personal information).
A PDN can (but need not) be or include a home entertainment network. For example, a PDN could be implemented in a business environment or elsewhere, to protect financial data or other content that is neither digital video nor digital audio.
While a PDN may include a personal computer, one is not required. For example, a PDN can be a collection of devices that are not personal computers but are essentially peer-level consumer appliances (e.g., audio/video receivers, disc players, and/or recording/playback units), and the network management functions can be distributed among such devices without the need for a centralized master controller. Distribution of network management functions is often desirable, such as (for example) in cases in which it will be necessary or desirable to perform essential network management functions from any device (or any of many devices) of a PDN.
Computing systems having open architecture (sometimes referred to herein as "open architecture systems" or "open systems") are computing systems configured to allow end users to add or remove hardware components and/or software modules conveniently. It should be noted that consumer appliances can share design and implementation features with a personal computer, with the distinction between the two classes of devices being defined by their user-visible interfaces and functionality.
The expression "audiovisual subsystem" (or "audiovisual system") is sometimes used herein to denote a system or device capable of displaying images in response to video data and/or emitting sound in response to audio data. Audiovisual subsystems are commonly coupled to a PDN by some form of serial link. Examples of audiovisual systems include: an HDTV monitor (including an HDMI receiver capable of decrypting HDCP-encrypted video and audio data received over an HDMI link), loudspeakers, a Digital Video Recorder (DVR), and an audio/video processor.
In typical embodiments of the invention, content that enters a PDN can be used within the PDN in any way that does not conflict with the restrictions placed on it by the owner (or licensor) of the intellectual property that pertains to the content (e.g., in any way that does not violate the terms of agreement under which the content was legally acquired by the user or owner of the PDN). For example, a PDN might be capable of receiving a satellite transmission of encrypted video and audio data that define a movie, and the Use Restriction Set for the data might prohibit all uses of the data except for decryption of the data, and any number of viewings of the movie (i.e., any number of playbacks of the video data and/or the corresponding audio data) by any device or devices of the PDN within a specified period (e.g., a specific day or week) or any number of viewings of the movie (by any device or devices of the PDN) up to a maximum allowable number of viewings. Preferred embodiments of the invention permit content that enters a PDNE to be decrypted, copied, stored, displayed and/or played back by devices of the PDN, and transmitted between devices of the PDN, provided that the Use Restriction Set for the content does not proscribe such uses.
In accordance with typical embodiments of the invention, the Use Restriction Set for content received by a PDN is indicated by data (sometimes referred to herein as "rights data" or "permitted use data" or a "permitted use flag") that is associated with the content on entry into the PDNE, and this association is securely maintained throughout the content's existence within the PDNE in accordance with a basic set of rules that map to the Use Restriction Set.
The expression "transcryption" of encrypted data (data encrypted in accordance with a first protocol) herein denotes decryption of the encrypted data followed by re-encryption of the decrypted data in accordance with a second protocol, all performed within a physically secure device or system (e.g., a physically secure subsystem of a PDN) so that the data are never accessible outside the device in unencrypted form. The second protocol is typically different than the first protocol but could be the same as the first protocol (e.g., if different keys are used to perform the re-encryption than were used to perform the original encryption). Transcryption is performed, in accordance with the invention, whenever encrypted content enters a PDNE from another domain (e.g., from a secure transport domain such as a cable or satellite delivery system, or from a DVD-like disc distribution mechanism), unless the content is already encrypted in a desired format upon entering the PDNE.
Modern Personal Computers (PCs) have evolved from strictly computing devices into communication and entertainment devices. As a result, users expect to be able to view prerecorded video entertainment, including feature length movies, on their PC. In addition, the increased performance of processors makes it appear advantageous to use software on a PC's processor to, for example, decode and play DVD movies. However, the owners of entertainment intellectual property (e.g., copyrights in movies) rightly are concerned about unauthorized use and copying of their property when the relevant content enters such a PC.
It is contemplated that consumers of content will assemble PDNs (each of which could include, but often will not include, at least one PC), and that content providers will provide content to PDNs with the understanding that content entering each PDN will be used within the PDN in any way that is not proscribed by the owner (or licensor) of the intellectual property in the content. However, the owners of such intellectual property rightly are concerned about unauthorized use and copying of their property when the relevant content enters a PDN. This is because the open-systems nature of the PC makes it trivial to take highly valuable content (such as music or films) and distribute copies to untold millions of users who do not have the permission of the owner(s) of the relevant, highly valuable intellectual property to access this content.
Unfortunately, due to the very nature of software decode (in either open or closed system device implementations), content cannot be effectively protected in a conventional PDNE that employs software to decrypt content. At some point during the software decode process, both the keys and the decrypted content (e.g., plaintext video and audio data) are available within the registers and/or memory of the device, and therefore unauthorized copies of the keys or content can made and distributed without permission of the owner(s) of the relevant intellectual property.
If high quality copies of movies or other works can be made and distributed widely, e.g. via the Internet, then the intellectual property in such content quickly loses its value to the owner. In order to protect some such content, the Content Scrambling System (CSS) was created to encrypt video content for DVDs. CSS is a cryptographic scrambling mechanism used on top of an MPEG compressed version of the original, raw video data. Each device that can play DVD content must have one or more cryptographic keys that allow the content to be descrambled (i.e. decrypted).
A closed system (e.g., a standalone DVD player or other standalone consumer electronic gear) can provide considerable content protection if it is configured so that keys and decrypted content stay within the closed system. If both the keys and decrypted content stay within the closed system, there is no simple method for "cracking" the content protection method. A "closed" system (e.g., a standalone DVD player) does not provide a way for a user to add or remove hardware or software. Thus, it is relatively simple to ensure that keys are stored and used within the closed system in a way that does not reveal them outside the closed system. It is worth noting that even an intended closed system can suffer from the same vulnerabilities as an open system. For example, if a cable or satellite Set Top Box (STB) is implemented using an architecture similar to that of a PC, where software handles the secret keys, it is possible for the software to be modified so that this secret material is compromised.
However, protection of content within a closed system presents other problems. For example, how are keys and content delivered securely to a closed system? If both keys and content follow the same path, then there is an inherent unidirectional information flow to a closed system that precludes use of good authentication methods. An important aspect of preferred embodiments of the present invention is that such embodiments allow (but do not require) keys and content to follow different paths within a PDN and even within a content-handling integrated circuit (e.g., an integrated circuit embodiment of the inventive Ingress or Egress Node) within a PDN. These embodiments of the invention can make key distribution and management much more secure than it is in either conventional closed or open systems by ensuring that secret keying material is never directly visible to software. This is due to the fact that integrated circuits provide a much higher degree of security than is achievable in software implementations, owning to the physical security inherent in their packaging, the much larger investment in rare and expensive equipment needed to extract information from them, and the measures that can be taken to protect secret information. In addition, this approach is more secure because it enables the implementation of better methods to verify that a device (e.g., a closed subsystem of a PDN) is properly licensed and allowed to use content (subject to a Use Restriction Set for the content). The present invention improves the current state of the art for content protection in both closed and open systems.
Current standard definition DVD content can be decoded in software on PCs which are open systems rather than closed systems. At some point during the software decode process, both the CSS keys and the decrypted video content are available within the registers and/or memory of the PC. Since, in a PC, a user can either intentionally or unintentionally load malicious programs or drivers, and such modules can gain access to the keys and/or content, the CSS protection is easily circumvented. In fact, two widely published attacks have been made. First, the CSS key for the Xing software decoder was found by reverse engineering the software module, and this key was traded among hackers. In addition, a CSS decryption program called DeCSS was created and distributed.
So far, the economic damage of these breaches of the content protection system has been limited because the image quality of standard definition video is much lower than theatrical quality. That is, much of the intrinsic value of the original movie is lost in the conversion from the higher definition original to standard TV definition. In addition, until recently it has been impractical to transfer large files, like decrypted movies, between users.
Today, High Definition TV (HDTV) is becoming more popular, and is expected to supplant standard definition TV in a few years. In order to provide consumers with prerecorded material of sufficient quality, HDTV DVDs (HD-DVDs) are being designed. As in the case of standard DVD players, standalone players for HD-DVDs with something similar to CSS should provide strong content protection.
However, decoding content (e.g., HD-DVD content) within a conventional open system or other conventional PDN creates a vulnerability. This vulnerability is often referred to as the "software hole" in content protection systems. The essence of "software hole" vulnerability is that if software within an open system (or other element of a PDN) manipulates either unencrypted keys or plaintext content, the keys or content are easily revealed for unauthorized uses. For example, if an open computing system programmed with software is employed to decrypt content, both the keys and the decryption program must be visible to the processor and, therefore, visible to other, potentially malicious, software that is loaded within the system. The software hole is a serious problem because, if unauthorized copies of binary data (indicative of audiovisual content) can be made, the copies will allow display and playback of the content with essentially the same quality as the original theatrical release. In addition, modern network technology will easily enable a Napster-like trading of copies of movies. As a result, the owner of the intellectual property will quickly find that the property has become worthless.
When software decryption of standard DVDs was initially deployed, the "software hole" was not completely understood. Keys within decryption software were obscured and thought to be secure. This "security through obscurity" was quickly shown to be illusory when the Xing key was extracted. Since then, much of the effort of the computer industry has gone into secure methods of storing the decryption key (e.g., the Microsoft Palladium Initiative, later renamed as the Next Generation Secure Computing Base). However, although this would make stealing the keys more challenging, it does not substantially improve security of the keys and does nothing to protect the content. Note that if the authorized player can obtain the key without manual intervention (e.g. the user entering a password needed to decrypt the content protection key), then any other program using the same procedure or algorithm can also obtain the key. If such a program was written in a malicious manner, the key could, for example, be sent over the Internet to millions of others in a few seconds. Similarly, since a software decoder requires that the key and decryption process or algorithm be visible to the processor, it can be observed and emulated by the attacker, resulting in unauthorized decryption of the content.
Above-referenced U.S. patent application Ser. No. 10/679,055 describes methods and apparatus for avoiding the software hole problem (in an open system) by protecting both content and keys a closed subsystem within the open system, where "closed subsystem" denotes a subsystem (e.g., a single integrated circuit) that does not provide users a convenient way to add hardware or software thereto or remove hardware or software therefrom. U.S. patent application Ser. No. 10/679,055 teaches that the closed subsystem should be designed to prevent key data (used by the closed subsystem) and unencrypted content in the closed subsystem from being disclosed outside the closed subsystem.
The closed subsystem of U.S. patent application Ser. No. 10/679,055 could be referred to as being "embedded" in an open system, and is typically configured to generate the protected content by decrypting incoming content in hardware to generate raw content and then re-encrypting the raw content using a different content protection protocol (also in hardware, and in the same chip in which the raw content is generated) without revealing the raw content to any element of the open system outside the closed subsystem. Neither the raw content nor key data used for generating or re-encrypting the raw content is revealed to any element of the open system outside the closed subsystem. The closed subsystem can be configured to assert the re-encrypted content directly to an external system (a system external to the open system). The external system can include a cryptographic device, and the closed subsystem can be configured to disclose key data to the cryptographic device (e.g., as part of a verification operation) as necessary to enable the cryptographic device to decrypt the re-encrypted content. Alternatively, the re-encrypted content is asserted from the closed subsystem through at least one other element of the open system to an external system (e.g., the re-encrypted content is "tunneled" through the open system to the external system).
The trend in the industry for sending video content to display devices is to deliver the content in digital form over serial links.
Various serial links for transmitting encrypted or non-encrypted data are well known. One conventional serial link, used primarily in consumer electronics (e.g., for high-speed transmission of video data from a set-top box to a television set) or for high-speed transmission of video data from a host processor (e.g., a personal computer) to a monitor, is known as a transition minimized differential signaling interface ("TMDS" link). The characteristics of a TMDS link include the following:
1. video data are encoded and then transmitted as encoded words (each 8-bit word of digital video data is converted to an encoded 10-bit word before transmission);
a. the encoding determines a set of "in-band" words and a set of "out-of-band" words (the encoder can generate only "in-band" words in response to video data, although it can generate "out-of-band" words in response to control or sync signals. Each in-band word is an encoded word resulting from encoding of one input video data word. All words transmitted over the link that are not in-band words are "out-of-band" words);
b. the encoding of video data is performed such that the in-band words are transition minimized (a sequence of in-band words has a reduced or minimized number of transitions);
c. the encoding of video data is performed such that the in-band words are DC balanced (the encoding prevents each transmitted voltage waveform that is employed to transmit a sequence of in-band words from deviating by more than a predetermined threshold value from a reference potential. Specifically, the tenth bit of each "in-band" word indicates whether eight of the other nine bits thereof have been inverted during the encoding process to correct for an imbalance between running counts of ones and zeroes in the stream of previously encoded data bits);
2. the encoded video data and a video clock signal are transmitted as differential signals (the video clock and encoded video data are transmitted as differential signals over conductor pairs);
3. three conductor pairs are employed to transmit the encoded video, and a fourth conductor pair is employed to transmit the video clock signal; and
4. signal transmission occurs in one direction, from a transmitter (typically associated with a desktop or portable computer, or other host) to a receiver (typically an element of a monitor or other display device).
A use of the TMDS serial link is the "Digital Visual Interface" interface ("DVI" link) adopted by the Digital Display Working Group. A DVI link can be implemented to include two TMDS links (which share a common conductor pair for transmitting a video clock signal) or one TMDS link, as well as additional control lines between the transmitter and receiver. A DVI link includes a transmitter, a receiver, and the following conductors between the transmitter and receiver: four conductor pairs (Channel 0, Channel 1, and Channel 2 for video data, and Channel C for a video clock signal), Display Data Channel ("DDC") lines for bidirectional communication between the transmitter and a monitor associated with the receiver in accordance with the conventional Display Data Channel standard (the Video Electronics Standard Association's "Display Data Channel Standard," Version 2, Rev. 0, dated Apr. 9, 1996), a Hot Plug Detect (HPD) line (on which the monitor transmits a signal that enables a processor associated with the transmitter to identify the monitor's presence), Analog lines (for transmitting analog video to the receiver), and Power lines (for providing DC power to the receiver and a monitor associated with the receiver). The Display Data Channel standard specifies a protocol for bidirectional communication between a transmitter and a monitor associated with a receiver, including transmission by the monitor of an Extended Display Identification ("EDID") message that specifies various characteristics of the monitor, and transmission by the transmitter of control signals for the monitor.
Another serial link is the "High Definition Multimedia Interface" interface (sometimes referred to as an "HDMI" link or interface) developed Silicon Image, Inc., Matsushita Electric, Royal Philips Electronics, Sony Corporation, Thomson Multimedia, Toshiba Corporation, and Hitachi.
It is common practice today to use the cryptographic protocol known as the "High-bandwidth Digital Content Protection" ("HDCP") protocol to encrypt digital video to be transmitted over a DVI or HDMI link and to decrypt the data at the DVI (or HDMI) receiver. The HDCP protocol is described in the document "High-bandwidth Digital Content Protection System," Revision 1.0, dated Feb. 17, 2000, by Intel Corporation, and the document "High-bandwidth Digital Content Protection System Revision 1.0 Erratum," dated Mar. 19, 2001, by Intel Corporation. The full text of both of these documents is incorporated herein by reference.
A DVI-compliant (or HDMI-compliant) transmitter implementing the HDCP protocol asserts a stream of pseudo-randomly generated 24-bit words, known as cout[23:0], during each active period (i.e. when DE is high). In a DVI-compliant system, each active period is an active video period. In an HDMI-compliant system, each active period is a period in which video, audio, or other data are transmitted. Each 24-bit word of the cout data is "Exclusive Or'ed" (in logic circuitry in the transmitter) with a 24-bit word of RGB video data input to the transmitter, in order to encrypt the video data. The encrypted data are then encoded (according to the TMDS standard) for transmission. The same sequence of cout words is also generated in the receiver. After the encoded and encrypted data received at the receiver undergo TMDS decoding, the cout data are processed together with the decoded video in logic circuitry in order to decrypt the decoded data and recover the original input video data.
Before the transmitter begins to transmit HDCP encrypted, encoded video data, the transmitter and receiver communicate bidirectionally with each other to execute an authentication protocol (to verify that the receiver is authorized to receive protected content, and to establish shared secret values for use in encryption of input data and decryption of transmitted encrypted data). More specifically, each of the transmitter and the receiver is preprogrammed (e.g., at the factory) with a 40-bit word known as a key selection vector, and an array of forty 56-bit private keys. To initiate the first part of an authentication exchange between the transmitter and receiver, the transmitter asserts its key selection vector (known as "AKSV"), and a pseudo-randomly generated session value ("An") to the receiver. In response, the receiver sends its key selection vector (known as "BKSV") and a repeater bit (indicating whether the receiver is a repeater) to the transmitter, and the receiver also implements a predetermined algorithm using "AKSV" and the receiver's array of forty private keys to calculate a secret value ("Km"). In response to the value "BKSV" from the receiver, the transmitter implements the same algorithm using the value "BKSV" and the transmitter's array of forty private keys to calculate the same secret value ("Km") as does the receiver.
Each of the transmitter and the receiver then uses the shared value "Km," the session value "An," and the repeater bit to calculate a shared secret value (the session key "Ks"), a value ("R0") for use in determining whether the authentication is successful, and a value ("M0") for use during a second part of the authentication exchange. The second part of the authentication exchange is performed only if the repeater bit indicates that the receiver is a repeater, to determine whether the status of one or more downstream devices coupled to the repeater requires revocation of the receiver's authentication.
After the first part of the authentication exchange, and (if the second part of the authentication exchange is performed) if the receiver's key selection vector is not revoked as a result of the second part of the authentication exchange, each of the transmitter and the receiver generates a 56-bit frame key Ki (for initiating the encryption or decrypting a frame of video data), an initialization value Mi, and a value Ri used for link integrity verification. The Ki, Mi, and Ri values are generated in response to a control signal (identified as "ctl3" in FIG. 1), which is received at the appropriate circuitry in the transmitter, and is also sent by the transmitter to the receiver, during each vertical blanking period, when DE is low. As shown in the timing diagram of FIG. 1, the control signal "ctl3" is a single high-going pulse. In response to the Ki, Mi, and Ri values, each of the transmitter and receiver generates a sequence of pseudo-randomly generated 24-bit words cout[23:0]. Each 24-bit word of the cout data generated by the transmitter is "Exclusive Or'ed" (in logic circuitry in the transmitter) with a 24-bit word of a frame of video data (to encrypt the video data). Each 24-bit word of the cout data generated by the receiver is "Exclusive Or'ed" (in logic circuitry in the receiver) with a 24-bit word of the first received frame of encrypted video data (to decrypt this encrypted video data). The 24-bit words cout[23:0] generated by the transmitter are content encryption keys (for encrypting a line of input video data), and the 24-bit words cout[23:0] generated by the receiver are content decryption keys (for decrypting a received and decoded line of encrypted video data).
During each horizontal blanking interval (in response to each falling edge of the data enable signal DE) following assertion of the control signal ctl3, the transmitter performs a rekeying operation and the receiver performs the same rekeying operation to change (in a predetermined manner) the cout data words to be asserted during the next active video period. This continues until the next vertical blanking period, when the control signal ctl3 is again asserted to cause each of the transmitter and the receiver to calculate a new set of Ki and Mi values (with the index "i" being incremented in response to each assertion of the control signal ctl3). The Ri value is updated once every 128 frames. Actual encryption of input video data or decryption of received, decoded video data (or encryption of input video, audio, or other data, or decryption of received, decoded video, audio, or other data, in the case of an HDMI-compliant system) is performed, using the cout data words generated in response to the latest set of Ks, Ki and Mi values, only when DE is high (not during vertical or horizontal blanking intervals).
Each of the transmitter and receiver includes an HDCP cipher circuit (sometimes referred to herein as an "HDCP cipher") of the type shown in FIG. 2. The HDCP cipher includes linear feedback shift register (LFSR) module 80, block module 81 coupled to the output of LFSR module 80, and output module 82 coupled to an output of block module 81. LFSR module 80 is employed to re-key block module 81 in response to each assertion of an enable signal (the signal "ReKey" shown in FIG. 2), using the session key (Ks) and the current frame key (Ki). Block module 81 generates (and provides to module 80) the key Ks at the start of a session and generates (and applies to module 80) a new value of key Ki at the start of each frame of video data (in response to a rising edge of the control signal "ctl3," which occurs in the first vertical blanking interval of a frame). The signal "ReKey" is asserted to the FIG. 2 circuit at each falling edge of the DE signal (i.e., at the start of each vertical and each horizontal blanking interval), and at the end of a brief initialization period (during which module 81 generates an updated value of the frame key Ki) after each rising edge of signal "ctl3."
Module 80 consists of four linear feedback shift registers (having different lengths) and combining circuitry coupled to the shift registers and configured to assert a single output bit per clock interval to block module 81 during each of a fixed number of clock cycles (e.g., 56 cycles) commencing on each assertion of the signal "ReKey" when DE is low (i.e., in the horizontal blanking interval of each line of video data). This output bit stream is employed by block module 81 to re-key itself just prior to the start of transmission or reception of each line of video data.
Block module 81 comprises two halves, "Round Function K" and "Round Function B," as shown in FIG. 3. Round Function K includes 28-bit registers Kx, Ky, and Kz, seven S-Boxes (each a 4 input bit by 4 output bit S-Box including a look-up table) collectively labeled "S-Box K" in FIG. 3, and linear transformation unit K, connected as shown. Round Function B includes 28-bit registers Bx, By, and Bz, seven S-Boxes (each a 4 input bit by 4 output bit S-Box including a look-up table) collectively labeled "S-Box B" in FIG. 3, and linear transformation unit B, connected as shown. Round Function K and Round Function B are similar in design, but Round Function K performs one round of a block cipher per clock cycle to assert a different pair of 28-bit round keys (Ky and Kz) each clock cycle in response to the output of LFSR module 80, and Round Function B performs one round of a block cipher per clock cycle, in response to each 28-bit round key Ky from Round Function K and the output of LFSR module 80, to assert a different pair of 28-bit round keys (By and Bz) each clock cycle. The transmitter generates value An at the start of the authentication protocol and the receiver responds to it during the authentication procedure. The value An is used to randomize the session key. Block module 81 operates in response to the authentication value (An), and the initialization value (Mi) that is updated by output module 82 at the start of each frame (at each rising edge of the control signal "ctl3").
Each of linear transformation units K and B outputs 56 bits per clock cycle. These output bits are the combined outputs of eight diffusion networks in each transformation unit. Each diffusion network of linear transformation unit K produces seven output bits in response to seven of the current output bits of registers Ky and Kz. Each of four of the diffusion networks of linear transformation unit B produces seven output bits in response to seven of the current output bits of registers By, Bz, and Ky, and each of the four other diffusion networks of linear transformation unit B produces seven output bits in response to seven of the current output bits of registers By and Bz.
In Round Function K, one bit of register Ky takes its input from the bit stream asserted by module 80 when the ReKey signal is asserted. In Round Function B, one bit of register By takes its input from the bit stream asserted by module 80 when the ReKey signal is asserted.
Output module 82 performs a compression operation on the 28-bit keys (By, Bz, Ky and Kz) asserted to it (a total of 112 bits) by module 81 during each clock cycle, to generate one 24-bit block of pseudo-random bits cout[23:0] per clock cycle. Each of the 24 output bits of module 82 consists of the exclusive OR ("XOR") of nine terms as follows: (B0*K0)+(B1*K1)+(B2*K2)+(B3*K3)+(B4K4)+(B5*K5)+(B6*K6)+(B7)+(K7), where "*" denotes a logical AND operation and "+" denotes a logical XOR operation.
In the transmitter, logic circuitry 83 (shown in FIG. 2) receives each 24-bit word of cout data and each input 24-bit RGB video data word, and performs a bitwise XOR operation thereon in order to encrypt the video data, thereby generating a word of the "data_encrypted" data indicated in FIG. 2. Typically, the encrypted data subsequently undergoes TMDS encoding before it is transmitted to a receiver. In the receiver, logic circuitry 83 (shown in FIG. 2) receives each 24-bit block of cout data and each recovered 24-bit RGB video data word (after the recovered data has undergone TMDS decoding), and performs a bitwise XOR operation thereon in order to decrypt the recovered video data.
Throughout the specification the expression "TMDS-like link" will be used to denote a serial link capable of transmitting encoded data (e.g., encoded digital video data), and optionally also a clock for the encoded data, from a transmitter to a receiver, and optionally also capable of transmitting (bidirectionally or unidirectionally) one or more additional signals (e.g., encoded digital audio data or other encoded data) between the transmitter and receiver, that is or includes either a TMDS link or a link having some but not all of the characteristics of a TMDS link. Examples of TMDS-like links include links that differ from TMDS links only by encoding data as N-bit code words (where N is not equal to 10, and thus the code words are not 10-bit TMDS code words) and links that differ from TMDS links only by transmitting encoded video over more than three or less than three conductor pairs. Some TMDS-like links encode input video data (and other data) to be transmitted into encoded words comprising more bits than the incoming data using a coding algorithm other than the specific algorithm used in a TMDS link, and transmit the encoded video data as in-band characters and the other encoded data as out-of-band characters (HDMI-compliant systems encode audio data for transmission according to an encoding scheme that differs from the encoding scheme employed for video data). The characters need not be classified as in-band or out-of-band characters based according to whether they satisfy transition minimization and DC balance criteria. Rather, other classification criteria could be used. An example of an encoding algorithm, other than that used in a TMDS link but which could be used in a TMDS-like link, is IBM 8b10b coding. The classification (between in-band and out-of-band characters) need not be based on just a high or low number of transitions. For example, the number of transitions of each of the in-band and out-of-band characters could (in some embodiments) be in a single range (e.g., a middle range defined by a minimum and a maximum number of transitions).
The term "transmitter" is used herein in a broad sense to denote any unit capable of transmitting data over a link and optionally also encoding and/or encrypting the data to be transmitted. The term "receiver" is used herein in a broad sense to denote any unit capable of receiving data that has been transmitted over a link (and optionally also decoding and/or decrypting the received data). Unless otherwise specified, a link can but need not be a TMDS-like link or other serial link. The term transmitter can denote a transceiver that performs the functions of a receiver as well as the functions of a transmitter.
The expression "content key" herein denotes data that can be used by a cryptographic device to encrypt content (e.g., video, audio, or other content), or to denote data that can be used by a cryptographic device to decrypt encrypted content.
The term "key" is used herein to denote a content key, or data that can be used by a cryptographic device to generate or otherwise obtain (in accordance with a content protection protocol) a content key. The expressions "key" and "key data" are used interchangeably herein.
The term "stream" of data as used herein denotes that all the data are of the same type and are transmitted from a source to a destination device. All or some of the data of a "stream" of data together may constitute a single logical entity (e.g., a movie or song, or portion thereof).
The term "HDCP protocol" is used herein in a broad sense to denote both the conventional HDCP protocol and modified HDCP protocols that closely resemble the conventional HDCP protocol but differ therefrom in one or more respects. Some but not all embodiments of the invention implement an HDCP protocol. The conventional HDCP protocol encrypts (or decrypts) data during active video periods but not during blanking intervals between active video periods. An example of a modified HDCP protocol is a content protection protocol that differs from the conventional HDCP protocol only to the extent needed to accomplish decryption of data transmitted between active video periods (as well as decryption of video data transmitted during active video periods) or to accomplish encryption of data to be transmitted between active video periods (as well as encryption of video data to be transmitted during active video periods).
A example of an HDCP protocol that is a modified version of the conventional HDCP protocol is an "upstream" variation on the conventional HDCP protocol (to be referred to as an "upstream" protocol). A version of the upstream protocol is described in the Upstream Linkfor High-bandwidth Digital Content Protection, Revision 1.00, by Intel Corporation, Jan. 26, 2001 (referred to hereinafter as the "Upstream Specification"). In the upstream protocol, the "transmitter" is a processor programmed with software for implementing the upstream protocol to communicate with a graphics controller (with the graphics controller functioning as a "receiver"). Such a processor can send video data to the graphics controller after executing an authentication exchange in accordance with the "upstream" protocol. The processor and graphics controller can be elements of a personal computer configured to send encrypted video data from the graphics controller to a display device. The graphics controller and display device can be configured to execute another encryption protocol (e.g., the above-mentioned conventional HDCP protocol, which can be referred to in this context as the "downstream" HDCP protocol) to allow the graphics controller (this time functioning as a "transmitter") to encrypt video data and send the encrypted video to the display device, and to allow the display device (functioning as a "receiver") to decrypt the encrypted video.
However, in contrast to the present invention, the upstream protocol would not provide adequate protection to raw content that is present in a processor of a personal computer or PDN where the processor is programmed with software for implementing the upstream protocol (with the processor functioning as a "transmitter") to communicate with (and send the raw content to) a graphics controller functioning as a "receiver," to allow the graphics controller (this time functioning as a "transmitter") to encrypt the raw content and transmit the resulting encrypted content (in accordance with the "downstream" HDCP protocol) to a device (e.g., a display device) external to the open system.
There are a number of structural flaws in the upstream protocol, and a personal computer or PDN that implements the upstream protocol would be subject to at least one attack in which the attacker could access the raw content present within the personal computer or PDN. An example of such an attack is a "man-in-the-middle" attack, in which the upstream authentication requests (from the graphics controller) are intercepted and the corresponding responses (to the graphics controller) are forged. A personal computer that implements the upstream protocol is easily attacked for one fundamental reason: at least two of the system elements (the application and the video driver) are in software. They can be debugged, de-compiled, altered, and copied, with any resulting "hack" potentially distributed quickly and easily across the Internet. Thus, the upstream protocol is fundamentally flawed and will allow people of ordinary skills (and with no special hardware or tools) to bypass the intended HDCP protections. Furthermore, this can happen on a large scale, and can not readily be detected or counteracted.
Aspects of the present invention are generalizations of teaching of above-referenced U.S. patent application Ser. No. 10/679,055. These and some other aspects of the present invention are methods and apparatus for protecting content in a PDN, including by avoiding the above-described software hole problem. In accordance with some aspects of the present invention, plaintext content and secrets used to accomplish decryption of the content are protected within hardware (e.g., one or more integrated circuits) in a PDN, and are encrypted whenever present outside such hardware in the PDN.

Method and apparatus for content protection in a personal digital network environment


A faucet-control device which enables users to control water flow in a basin fixture (10) by leaning against the front of the fixture (10) with a lower limb. Eight embodiments (A-H) are described. A normally-closed, electrically-controlled valve (16, 44, 46, or 62) controls water flow. A thin, flat, normally-open, momentary-contact, pressure-actuated mat switch (14) controls the valve (16, 44, 46, or 62). Any user in a normal stance may activate the mat switch (14) by applying a small pressure with a lower limb. In Embodiment A, activating the mat switch (14) opens the valve(s) (16), allowing water to flow. In Embodiment B, two stacked mat switches (14 and 14A) control a two-stage valve (44). In Embodiment C, a capacitive mat (50) enables the user to select continuously variable flow rates with a lower limb. A servo-drive circuit (48) converts variable capacitance from the capacitive mat (50) to an amplified current which drives a servo valve (46). In Embodiment D, the servo-drive circuit (48 ) drives a mixing valve (62). The mixing valve (62) provides continuously variable water temperatures in response to varying pressure on the capacitive mat (50). Embodiments E-H utilize four different faucet configurations, in combination with the valves (16, 44, 46, or 62) from Embodiments A-D.

1. Field of Invention
This invention relates to faucets, specifically to a device which enables users to control water flow in a basin fixture by leaning against the front of the basin fixture with their lower body.
2. Description of Prior Art
Previous inventions use foot pedals, knee operated devices, timers, and proximity detectors to attain the benefits of hands-free, faucet control.
In U.S. Pat. No. 5,135,028 to Richenbach (1992), a foot switch actuates water flow. Effort and thought must go into placing the foot correctly. A change in stance is often required, particularly when stopping and restarting water flow. The foot switch can cause tripping or toe injuries, as it mounts in the area where the user normally moves his/her feet.
The invention described in U.S. Pat. No. 5,095,941 to Betz (1992) uses an air bulb, instead of an obtrusive pedal or switch. Mounting the air bulb can be difficult depending on the type of basin fixture and floor covering. The air bulb necessitates pneumatic lines and devices which complicate aesthetic and inexpensive installation. If mounted higher, the air bulb may be knee actuated. The knee actuated air bulb limits users, according to their height and stance. Larger air bulbs can solve this. However, larger air bulbs make installation and aesthetic coordination more difficult.
In U.S. Pat. No. 4,884,725 to Ahad (1989), a timer controls water flow. Some use of the hands is still required with most timers. The lack of specific and direct flow control makes their use impractical in residential settings. Timers are often inconvenient in public facilities also.
In U.S. Pat. No. 5,074,520 to Lee (1991), a proximity detector controls water flow based on the proximity of the hands or other objects to the waterspout. To implement this invention, any preexisting faucet must be replaced. In U.S. Pat. No. 4,823,414 to Piersimoni (1989), the proximity detector is not part of the faucet, and faucet replacement is not necessary. However, installation often requires drilling into the basin. In both cases, the electronic circuitry involved can raise the cost substantially. More expense may result if there is concern about the aesthetic coordination of the proximity detector with the faucet and/or the basin fixture.
Many versions of the aforementioned faucet-control techniques predated these more modern versions. The majority of the older versions are more complicated, more difficult to install, and generally less desirable. A discussion of the older versions is redundant and lengthy. A discussion of various combinations of the aforementioned faucet-control techniques is also redundant.
Foot pedals, knee operated devices, timers, and proximity detectors are in use. However, to my knowledge, there is no significant residential usage. Many public facilities also lack hands-free, faucet-control devices. The spread of germs and other contaminants is especially an issue in public facilities. As population grows and the usable water supply decreases, economic water conservation devices will be increasingly crucial. Generally, people only use water-conservation devices that are convenient, affordably priced, and inexpensive to install and operate. In many cases, the above described devices require a professional plumber for installation. Many of the above devices use electric power constantly, whether they are in use or not. The amounts vary, but may become significant as electric power costs and environmental concerns increase. Also, if the device is aesthetically displeasing, its widespread use will be diminished, particularly in affluent areas.

Hands-free, leg-operated, faucet-control device


An occlusion device having at least five arms. Though the number of arms is increased, the diameter of each arm is reduced. As a result, the increased number of arms provides the desired tension as the occlusion device is deployed and provides the desired strength to hold the occlusion device in place and properly occlude the defect. At the same time, the reduced diameter of the arms improves the cycle life of the occlusion device. Furthermore, the increased number of arms provides for better sealing across the defect and reduces residual shunting.

The present invention relates to a method of occluding an aperture in a body. More specifically, the present invention relates to an occlusion device for occluding a septal defect having five or more arms.
The heart is generally comprised of four chambers, the left and right atrium and the left and right ventricle. Separating the left and right sides of the heart are two walls, or septa. The wall between the two atria is the interatrial septum, and the wall between the two ventricles is the interventricular septum. There are several defects which can affect the septa of both children and adults, including patent ductus arteriosus, patent foramen ovate, atrial septal defects (ASDs), and ventricular septal defects (VSDs).
Normally, permanently repairing septal or other cardiac defects in adults and children requires open heart surgery, a high risk, painful, and costly procedure. In response to these concerns, modern occlusion devices have been developed are that small enough to be delivered through a catheter. Rather than surgery, these occlusion devices are deployed by inserting a catheter into a major blood vessel and moving the occlusion device through the catheter. This type of procedure can be performed in a cardiac cathlab, and avoids much of the risks, cost, and pain associated with open heart surgery. These modern occlusion devices can be used to treat a wide range of cardiac defects, including patent ductus arteriosis, patent foramen ovale, atrial septal defects, ventricular septal defects, and can be used to occlude other cardiac and non-cardiac apertures.
Occlusion devices that can be inserted via a catheter include button devices, collapsible umbrella-like structures, and plug-like devices. Occlusion devices with umbrella-like structures use a system of small metal wires to hold the occlusion device in place. When designing such occlusion devices, there are several design constraints due to the severe environment the human heart presents, including a continuous cycling of up to 5 billion pulses over the lifetime of a human.
First, the occlusion device must be stiff enough and have enough tension so that the occlusion device will remain in place even as the heart pulses. Second, the occlusion device must have a high cycle life, so that it does not develop fatigue failure problems due to the constant flexing of portions of the occlusion device caused by the beating heart. Lastly, the device must have a suitable tactile response so that when it is deployed, the physician can "feel" whether or not the device has been successfully deployed at the defect.
Each of these constraints competes with the other, making it difficult to design an occluder which adequately addresses all of them. Increasing stiffness may increase the tactile response, but may also lead to a decreased cycle life. This is because increasing the stiffness typically involves varying the shape and increasing the diameter of the wires used in occlusion devices. However, increasing the diameter of the wire to improve its stiffness or strength often reduces the cycle life because a larger diameter wire is often more brittle, and thus more susceptible to fatigue failure. Conversely, using smaller, thinner wires may result in increase fatigue life, but may also reduces the ability of the occlusion device to successfully occlude the defect, and may adversely affect the tactile response felt by the physician.
Yet another design criteria for designing an occlusion device is to ensure that the occluder seats properly. Because every patient's heart is different, and because it is extremely rare for the surfaces of the heart to be smooth and even, it is difficult to ensure that the occlusion device properly matches the contours of the defect to be occluded.
Thus, there is a need in the art for an occlusion device with a high fatigue life that has enough tension so that the occlusion device stays in place and provides the desired feel to a physician. There is also a need in the art for improved conformance to the defect to be occluded.

Occlusion device having five or more arms


A database engine and optimizer framework support the use of transitive closure to assist in rewriting GROUP BY and ORDER BY clauses to reduce the number of referenced tables (optimally to a single table if possible) and to free the join order selected for the query plan. The SQL parser and optimizer, by performing transitive closure on the selection, or search, conditions is able to identify which fields referenced by the ORDER BY and GROUP BY clauses can be replaced with equivalent fields to improve the performance of the query. In one instance, the fields are replaced so that the ORDER BY or GROUP BY clause references only a single table. If more than one such possible ORDER BY or GROUP BY clause exists, then the optimizer selects from among the different possible clauses to select the one that provides the best performing join order.

Databases are used to store information for an innumerable number of applications, including various commercial, industrial, technical, scientific and educational applications. As the reliance on information increases, both the volume of information stored in most databases, as well as the number of users wishing to access that information, likewise increases. Moreover, as the volume of information in a database, and the number of users wishing to access the database, increases, the amount of computing resources required to manage such a database increases as well.
Database management systems (DBMS's), which are the computer programs that are used to access the information stored in databases, therefore often require tremendous resources to handle the heavy workloads placed on such systems. As such, significant resources have been devoted to increasing the performance of database management systems with respect to processing searches, or queries, to databases.
Improvements to both computer hardware and software have improved the capacities of conventional database management systems. For example, in the hardware realm, increases in microprocessor performance, coupled with improved memory management systems, have improved the number of queries that a particular microprocessor can perform in a given unit of time. Furthermore, the use of multiple microprocessors and/or multiple networked computers has further increased the capacities of many database management systems.
From a software standpoint, the use of relational databases, which organize information into formally-defined tables consisting of rows and columns, and which are typically accessed using a standardized language such as Structured Query Language (SQL), has substantially improved processing efficiency, as well as substantially simplified the creation, organization, and extension of information within a database. Furthermore, significant development efforts have been directed toward query "optimization", whereby the execution of particular searches, or queries, is optimized in an automated manner to minimize the amount of resources required to execute each query.
Through the incorporation of various hardware and software improvements, many high performance database management systems are able to handle hundreds or even thousands of queries each second, even on databases containing millions or billions of records. However, further increases in information volume and workload are inevitable, so continued advancements in database management systems are still required.
One area that has been a fertile area for academic and corporate research is that of improving the designs of the "query optimizers" utilized in many conventional database management systems. The primary task of a query optimizer is to choose the most efficient way to execute each database query, or request, passed to the database management system by a user. The output of an optimization process is typically referred to as an "execution plan," "access plan," or just "plan" and is frequently depicted as a tree graph. Such a plan typically incorporates (often in a proprietary form unique to each optimizer/DBMS) low-level information telling the database engine that ultimately handles a query precisely what steps to take (and in what order) to execute the query. Also typically associated with each generated plan is an optimizer's estimate of how long it will take to run the query using that plan.
An optimizer's job is often necessary and difficult because of the enormous number (i.e., "countably infinite" number) of possible query forms that can be generated in a database management system, e.g., due to factors such as the use of SQL queries with any number of relational tables made up of countless data columns of various types, the theoretically infinite number of methods of accessing the actual data records from each table referenced (e.g., using an index, a hash table, etc.), the possible combinations of those methods of access among all the tables referenced, etc. An optimizer is often permitted to rewrite a query (or portion of it) into any equivalent form, and since for any given query there are typically many equivalent forms, an optimizer has a countably infinite universe of extremely diverse possible solutions (plans) to consider. On the other hand, an optimizer is often required to use minimal system resources given the desirability for high throughput. As such, an optimizer often has only a limited amount of time to pare the search space of possible execution plans down to an optimal plan for a particular query.
There are a few SQL criteria, or clauses, that result in re-ordering a result set that is returned for a query. Examples of such clauses include the GROUP BY and ORDER BY clauses. A GROUP BY clause aggregates records in the result set that have a common value in a specified field or fields. An ORDER BY clause arranges the records of the result set in a specified order.
To illustrate the use of these clauses, consider the example of an Entertainment Agency database that includes a table for each entertainer and a table for each engagement. An example query that fetches the entertainer's name and contract price for each engagement might resemble:
SELECT Entertainers.StageName, Engagements.Month,
Engagements.ContractPrice
FROM Entertainers
INNERJOIN Engagements
ON Entertainers.ID=Engagements.ID
ORDER BY Entertainers.StageName, Engagement.Month
The result set returned would resemble:
StageNameMonthContractPriceAl BuckJanuary $200.00Al BuckJanuary $500.00Al BuckFebruary $185.00Al BuckMarch $200.00Al BuckMarch $110.00Carol TrioJanuary$1600.00Carol TrioFebruary $410.00Carol TrioFebruary $680.00Carol TrioFebruary $100.00In particular, the ORDER BY clause causes the result set to be returned in descending alphabetical order based on the entertainers stage name and then on the month (in calendar order). If the query is modified slightly to include a GROUP BY clause as below:
SELECT Entertainers.StageName, Engagements.Month,
SUM(Engagements.ContractPrice)
FROM Entertainers
INNERJOIN Engagements
ON Entertainers.ID=Engagements.ID
GROUP BY Entertainers.StageName, Engagements.Month
Then the result set is aggregated for each unique combination of fields within the GROUP BY clause. The result set would return:
StageNameMonthContractPriceAl BuckJanuary $700.00Al BuckFebruary $185.00Al BuckMarch $310.00Carol TrioJanuary$1600.00Carol TrioFebruary$1190.00
When the GROUP BY and ORDER BY clauses include references to more than one table as in the above example (i.e., Entertainers and Engagements), the optimizer must create a temporary file to hold the result set in order to perform the GROUP BY or ORDER BY operation. The creation of the temporary file, however, often slows the performance of the query.
Moreover, where queries are interactive, the need to create a temporary becomes even more problematic. Interactive queries often return initial records to a user while the query continues to concurrently execute to generate the entire result set. Thus, because queries like those above must finish running entirely and the temporary file created before the GROUP BY and ORDER BY operations can be performed, interactive queries often appear to be slow and unresponsive.
When a GROUP BY or ORDER BY clause references only one table, however, then creation of a temporary file is not needed in order to perform the re-ordering of the result set. Thus, the above performance penalties can be avoided. Accordingly, there is an unmet need in the prior art of optimizing SQL queries that reduces the number of different tables referenced in ORDER BY and GROUP BY clauses.
Queries which the optimizer can handle often include Join operations of various types. Join operations involve searching across two tables in various ways to identify records that match search conditions. One area that optimizers can particularly optimize a query plan having these join operations involves what is known as "join order". A query plan can include a query that involves joining of three or more tables. Because a single join is limited to accessing two tables, such multi-table joins are performed in sequence according to a particular order. For example, a query that involves joining tables A, B and C can often be performed as a join of table A and B followed by a join of table A and C. Alternatively, in many instances, the same query can be performed as a join of Table A and C followed by the join of Table A and B.
When an ORDER BY or GROUP BY clause is present in a join operation, the optimizer is locked into a particular join order even if that order may not be optimal when performing the ordering or grouping according to an index. For example, in the above examples, the first field of the ORDER BY and GROUP BY clauses is Entertainers.StageName. Under these circumstances, the optimizer must lock Entertainers as the first table in the join order. This requirement prevents the optimizer from selecting a join order that may be more optimal. Accordingly, there is also an unmet need in the prior art of optimizing SQL by rewriting ORDER BY and GROUP BY clauses so as to expand the set of possible the join orders from which an optimizer can select.

Method applying transitive closure to group by and order by clauses

International Business Machines Corporation


A level shifter is provided. This level shifter includes a first driver, a second driver, a capacitor, and a common mode circuit. The first driver has a first signal path that is coupled between an input terminal and an output terminal, and the first driver operates in a first voltage domain. The second operates in a second voltage domain and includes a second signal path and latch. The second signal path is coupled between an input terminal and an output terminal of the second driver, and the latch that is coupled to the input terminal of the second signal path. The capacitor that is coupled between the output terminal of the first signal path and the input terminal of the second signal path, and the bias circuit is coupled to the input terminal of the second signal path and operates in the second voltage domain.

Turning to FIG. 1, a conventional level shifter 100 can be seen. Level shifter 100 is generally comprised of drivers 102 and 104 (which operate in different voltage domains) with capacitors C1 and C2 (which should be sufficiently large so as to have a sufficiently low cut-off frequency) coupled therebetween. For higher voltage applications, capacitors C1 and C2 can be replaced with capacitor strings. Typically, each of drivers 102 and 104 has a pair of signal or data paths (which are generally comprised of inverters 106-1 to 106-4 and 108-1 to 108-4) so as to be able to generate differential signal DOUT/ DOUT from differential signal DIN/ DIN. Latch 110 (which is coupled between the signals paths of driver 104 and which are generally comprised of inverters 108-5 and 108-6) is also included to drive the signal to rail.
A problem with this arrangement, however, is that, as switching occurs, capacitors C1 and C2 are repeatedly charged and discharged. As a result, the voltage on the capacitors C1 and C2 varies, distorting the signal DIN/ DIN as it traverses the level shifter 100 (as shown in FIG. 2). Additionally, jitter is introduced, which distorts the eye-opening pattern (as shown in FIG. 3). Thus, there is a need to compensate for distortion in level shifters.
Some other examples of conventional systems are: U.S. Patent Pre-Grant Publ. No. 2006/0091907; Rajapandian et al., "High-voltage power delivery through charge recycling," IEEE J. of Solid-State Circuits, Vol. 41, No. 6, pp. 1400-1410, June 2006; and Breussegem et al., "Monolithic capactivie DC-DC Converter with Single Boundary-Multiphase Control and Voltage Domain Stacking in 90 nm CMOS," IEEE J. of Solid-State Circuits, Vol. 46, No. 7, pp. 1715-1727, July 2011.


A method for processing queries is provided. A first representation of a query is generated, where the query includes a certain operator that is to be performed based on an XPath expression that is expandable into multiple location paths. The first representation of the query is rewritten into a second representation that corresponds to an equivalent query, where rewriting the first representation includes expanding the XPath expression into the plurality of location paths and, based on the certain operator, including a plurality of operators in the second representation, where the plurality of operators include: a first set of operators that is to be performed based on each of the plurality of location paths, and a second set of operators that is to be performed based on data returned from at least one operator included in the first set of operators. The query may thereafter be executed based on the second representation. The second representation may be further rewritten to third representation depending on the physical storage of XML.

The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
XML is a standard for data and documents that is finding wide acceptance in the computer industry. XML describes and provides structure to a body of data, such as a file, a data stream, or a data packet. The specification for XML was developed by the W3C consortium and is located on the Internet at "http://www.w3.org/XML". According to the XML specification, XML data is organized in nodes that are logically arranged as hierarchical trees. The XML specification also provides for opening and closing tags that delimit different portions of an XML document, which portions are commonly referred to as XML elements. The data included between an opening and a closing tag of an XML element is referred to as the XML element's content. Each XML element may also contain one or more name-value pairs referred to as attributes.
For example, FIG. 1 is a block diagram that illustrates XML document 100, which stores the data of a purchase order. As indicated by opening tag 102, XML document 100 includes the XML element "PurchaseOrder" as the parent node of the document. The "PurchaseOrder" XML element includes the attribute "poid" that is associated with the value "1234". As indicated by opening tags 104 and 108, the "PurchaseOrder" XML element also includes XML elements "openOrders" and "closedOrders" as child nodes. Each of XML elements "openOrders" and "closedOrders" includes other XML elements as child nodes, such as, for example, XML elements "lineItems" and "itemName".
The content and structure of an XML document may be validated against an XML schema. As referred to herein, an XML schema is a set of schema components that describes the structure of XML documents and specifies constraints on the content of the documents. Typically, an XML schema conforms to a definition language; examples of such definition languages include, but are not limited to, any type of proprietary or open-source Document Type Definition (DTD) language and the XML Schema Language (as described in the XML Schema Specification, W3C Recommendation 28 Oct. 2004, located at "http://www.w3.org/TR/xmlschema-0/", "http://www.w3.org/TR/xmlschema-1/", and "http://www.w3.org/TR/xmlschema-2/", the entire contents of which are hereby incorporated by reference for all purposes as if fully set forth herein).
Various expression languages have also been developed for accessing and querying a broad spectrum of XML data that is stored in various XML repositories, such as, for example, relational databases, object-relational databases, and object databases. One such language is the XML Path Language (XPath). A specification for XPath is described in "XML Path Language (XPath) 2.0", W3C Candidate Recommendation 3 Nov. 2005, located at "http://www.w3.org/TR/xpath20/", the entire content of which is hereby incorporated by reference for all purposes as if fully set forth herein. The basic purpose of XPath is to provide mechanisms for addressing the nodes in XML documents. The basic building block of XPath is the XPath expression, which is a string of characters. XPath provides for different types of XPath expressions that may be constructed from sub-expressions, keywords, symbols, and operands. Evaluating an XPath expression may result in identifying a set of nodes from the input XML documents, one or more atomic values, or more generally, identifying XML data instances of any type allowed by the XQuery Data Model. (A draft specification for the XQuery Data Model is described in "XQuery 1.0 and XPath 2.0 Data Model", W3C Candidate Recommendation 3 Nov. 2005, located at "http://www.w3.org/TR/xpath-datamode1/", the entire content of which is hereby incorporated by reference for all purposes as if fully set forth herein.)
One commonly-used type of XPath expression is a location path. A location path, when evaluated, identifies a set of nodes relative to a context node and can be used to locate the nodes within XML document trees. A location path typically includes a series of one or more expressions, which may also be referred to as steps. One type of step, or expression, that may be included in a location path is the axis expression. An axis expression identifies a set of nodes that are reachable from the context node via a specified axis.
One type of axis expression is the descendant axis expression, which may be represented in a location path by the abbreviation "//". A descendant axis is defined as the transitive closure of the child axis. Thus, a descendant axis expression identifies all descendants of the context node (the children of the context node, the children of the children nodes, and so on), where the descendants do not include attribute nodes and namespace nodes.
Descendant axis expressions are commonly used in queries to query XML documents. For example, consider the following query Q0, which tries to find the purchase order id for all purchase orders stored in XML documents that include a "CPU" item:
Q0.select extractValue(value(v),'/PurchaseOrder/@poid')from potab vwhere existsNode(value(v),'//lineItems[itemName="CPU"]')=1
The query Q0 includes the descendant axis expression "//lineItems" as an input argument to the "existsNode" operator. This descendant axis expression may be used in query Q0 for at least the following three reasons, which are also some of the main reasons of why usage of descendant axis expressions in queries is so common:                (1) the user may not be aware of the full XML schema that purchase order XML documents conform to; thus, the user may not be able to list the exact location paths to the "lineItems" XML elements from the root node of a purchase order XML document;        (2) the XML schema, in which the purchase order XML documents are defined, may be allowed to evolve and as a result the location paths to the "lineItems" XML elements may change in the future; thus, using the descendant axis expression "//" in the input argument to the "existsNode" operator protects the user from having to change the query when the XML schema changes; and        (3) there may be multiple paths leading to "lineItems" XML elements from the root; thus, listing all location paths in the query may be too cumbersome for the user.
Despite the common usage of descendant axis XPath expressions, however, the past approaches for evaluating queries, such as query Q0, that include dependant axis expressions are not efficient and suffer from multiple disadvantages. Specifically, the past approaches are not suited to efficiently handle queries that are based on descendant axis expressions that identify, and are expandable into, multiple location paths.
As an example, consider evaluating query Q0 against the example XML document 100 that is illustrated in FIG. 1. As indicated by opening tags 106 and 110, XML document 110 includes "lineItems" XML elements within both the "openOrders" XML element and the "closedOrders" XML element. Thus, the descendant axis expression "//lineItems" in query Q0 would identify both the "/PurchaseOrder/openOrders/lineItems" location path and the "/PurchaseOrder/closedOrders/lineItems" location path. (It is noted that the XML document in FIG. 1 is provided for illustration purposes only. In a real life scenario, an XML document storing a purchase order may be significantly more complex in structure, may include a significant number of purchase order XML elements, and may include multiple types of XML elements that include "lineItems" XML elements, all of which would make evaluating query Q0 against such an XML document significantly more complex and computationally expensive than XML document 100 in FIG. 1 might otherwise suggest.)
According to one past approach, queries that include operators over descendant axis expressions are not optimized at all. According to this approach, whenever a query engine detects the presence of a descendant axis expression in a query, the query engine first fully materializes the underlying XML documents and only thereafter evaluates the operators that are based on location paths identified by the descendant axis expression. In this way, the query engine ensures that it can properly process the query when the descendant axis expression identifies multiple location paths since the query engine has materialized and can access the entire underlying XML documents. The disadvantage of this approach, however, is that the process of materializing XML documents is computationally expensive with respect to resources, such as, for example, memory, CPU time, and storage space. For this reason, this approach typically suffers from severe performance degradation and user-perceived latency especially in cases where queries are evaluated against large XML documents that are stored in object-relational storage.
According to another past approach, a query engine is generally capable of optimizing query operators over deterministic XPath location paths prior to query execution, but is not capable of processing descendant axis expressions because descendant axis expressions may identify multiple location paths. Thus, in this approach users are required to expressly list all XPath location paths before submitting the query to the query engine. One disadvantage of this approach is that it is not user-friendly and places the burden on the users to know the exact structure of the XML documents being queried, which may not be feasible. Another disadvantage is that the users are not protected from XML schema evolution since queries identifying exact location paths may have to be changed when the XML schema of the queried XML documents is changed.
Although the disadvantages of the above approaches are presented with respect to descendant axis expressions that identify multiple location paths, it is noted that these disadvantages are not unique to the descendant axis expressions. Rather, these disadvantages are common to any kind XPath expression that is capable of identifying multiple location paths. An example of such other XPath expression is the wildcard expression, which may be represented in a principal XPath expression by the symbol "*". A wildcard expression, when evaluated, identifies all location paths to nodes that are of the same node type as the context node in the principal XPath expression. For example, when used in an XPath expression relative to an element context node, a wild card expression may identify all XML elements that are children nodes of the context node.
Based on the foregoing, techniques are clearly needed for efficiently processing of queries that include operators over XPath expressions that identify multiple location paths.

Techniques of rewriting descendant and wildcard XPath using one or more of SQL OR, UNION ALL, and XMLConcat() construct


An object of this invention is to provide a method, etc., for efficiently proliferating a pluripotent epithelial somatic stem cell. A method for producing an epithelial somatic stem cell comprising Steps (A) and (B) below:                (A) expressing a gene of a protein having an activity for causing a cell in G0 phase or G1 phase to enter S phase, in a cell population including an epithelial somatic stem cell; and        (B) culturing the cell obtained in Step (A) in the presence of an extracellular growth factor.

The use of cells, in particular, human cells, is now indispensable in disease research or new drug development. The demand therefor is expected to further increase in the future.
The cells are generally prepared by isolating them from tissues obtained from a biological organism, and are cultured to be used for various experiments and research. In such usage, differentiated cells are often used according to the target usage. However, the proliferation of differentiated cells ex vivo may be difficult. Moreover, differentiated cells have many problems, such as the rapid loss of original activity, considerable production cost, and great characteristic variation depending on the donor. For example, human hepatic cells are known for their variation in drug-metabolizing enzyme activity or drug-transporting activity. Further, hepatic cells obtained from biological tissue suffer a problematic rapid loss of function after culture.
To solve the above problems, in particular, the problem regarding cell proliferation ability, differentiated cells are often immortalized. For example, various methods for cell immortalization, including a method for introducing a SV (simian virus) 40 large T-antigen gene or a human telomerase gene into human hepatic cells, have been attempted (Non-patent Document 1). However, most immortalized cells lose their original differentiation character. There have been no reports of an immortalized cell fully exhibiting its original function. For example, telomerase genes are hardly expressed in normal cells of a human tissue. Further, using cancer genes for the production of immortalized cells is not regarded as desirable, considering the possibility of their deviation from the normal cells.
On the other hand, a method of isolating somatic stem cells having high proliferative ability from a biological tissue, and culturing and proliferating the cells ex vivo has been known as a means for obtaining a large number of normal primary cultured cells. Acquisition of somatic stem cells may be performed, for example, by a method for obtaining somatic cells from a biological tissue, and isolating somatic stem cells using a cell sorter according to the expression pattern of the cell-surface molecules. However, it is difficult to obtain a tissue containing desired somatic stem cells and select a suitable antibody for the somatic stem cells, and it is not easy to obtain a somatic stem cell population having high purity. Further, since the number of stem cells in a tissue is very small, a large number of cells (for example, 108 or more cells) is necessary as a starting material for the collection of a certain number of stem cells using a cell sorter. Moreover, even if a somatic stem cell population having high purity can be obtained, it is difficult to proliferate the cells by culture (in particular, it is difficult to culture the cells while maintaining the original properties of the somatic stem cells).
A method for proliferating pluripotent stem cells such as ES cells or iPS cells, and inducing differentiation of the proliferated cells to obtain the desired differentiated cells, has also been known. Although some reports confirmed differentiation of a part of ES cells or iPS cells, their differentiation efficiencies are insufficient at present, and various other cells are often contained. Thus the isolation of a highly pure differentiated cell population remains an arduous task.
Under such circumstances, there has been a strong need for a method for stably supplying a highly pure somatic stem cell population having a certain differentiation ability.

Method for producing epithelial stem cells