TIME MULTIPLEXING (TDM)-BASED OPTICAL TERNARY CONTENT ADDRESSABLE MEMORY (TCAM)

DE102021108822B4Active Publication Date: 2025-03-20HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
DE102021108822
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-06-18
Filing Date
2021-04-08
Publication Date
2025-03-20
Estimated Expiration
2041-04-08

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

An optical ternary content-addressable memory (TCAM) comprising the following: an input encoder (102, 602, 702) configured to encode a search word (103, SW) onto an optical search signal (110, 610, 710), wherein each bit position of the search word (103, SW) is represented by at least two time slots of a clock signal; a splitter (203) optically coupled to an output of the input encoder (102, 602, 702) and configured to generate multiple copies of the optical search signal (110, 610, 710); a multi-word encoder (505, 705) configured to generate a plurality of TCAM word signals (530, 730), each TCAM word signal (530, 730) encoding a TCAM-stored word (525) from a plurality of TCAM-stored words (525), and each bit position of the TCAM-stored word (525) being represented by at least two time slots of the clock signal; an optical interleaver (510, 650) configured to route one copy of the optical search signal (110, 610, 710) from the plurality of copies of the optical search signal (110, 610, 710) and one TCAM word signal (530, 730) from the plurality of TCAM word signals (530, 730) such that they propagate in parallel as a plurality of pairs of input signals; a plurality of multipliers (640cc), each multiplier (640cc) being configured to receive a pair of input signals from the plurality of pairs of input signals and to compare the respective copy of the plurality of copies of the optical search signal (110, 610, 710) and the respective TCAM word signal (530, 730); and a plurality of symmetrical photodetector arrays (509, 660, 780), wherein each symmetrical photodetector array (509, 660, 780) is optically coupled to an output of a respective multiplier (640cc) of the plurality of multipliers (640cc), wherein each symmetrical photodetector array (509, 660, 780) is configured to detect a mismatch between the respective copy of the multiple copies of the optical search signal (110, 610, 710) output by a first output of a respective multiplier (640cc) and the respective TCAM word signal (530, 730) output by a second output of the respective multiplier (640cc) by detecting light during at least one time slot of the clock signal.
Need to check novelty before this filing date? Find Prior Art

Description

Background of the invention

[0001] A content-addressable memory (CAM) is a type of memory capable of performing a seek operation, where a data sequence can be input as the search content, and the resulting output is an address of a memory location that stores matching data. This is in contrast to a read operation, where an address is input, and the resulting output is the data stored at the location corresponding to the searched address. Certain CAMs can perform both the seek and read operations mentioned above, whereas non-CAM memories can perform the read operation but not the seek operation.

[0002] Ternary CAM (TCAM) is a type of CAM in which the bit cells can store a placeholder data value in addition to two binary data values. When a bit cell storing the placeholder value is searched, the result is a match, regardless of the search criteria used to search the bit cell. Certain TCAMs can also allow a search based on a wildcard search criterion. When a bit cell is searched based on the wildcard search criterion, the result is a match, regardless of the value stored in the bit cell.

[0003] US5333117A describes parallel MSD arithmetic using an optoelectronic shared content-addressable memory. US20180081388A1 describes the simultaneous execution of attribute-dependent operations on (optical) signals. Brief description of the drawings

[0004] The present disclosure will be described in detail according to one or more different embodiments with reference to the following figures. The figures are for illustrative purposes only and represent merely typical or exemplary embodiments. Fig. 1 shows an example of an optical search engine in accordance with embodiments of the technology disclosed herein. Fig. 2 shows another optical search engine in accordance with embodiments of the technology disclosed herein. Fig. 3 shows another example of an optical search engine in accordance with embodiments of the technology disclosed herein. Fig. 4 shows another example of an optical search engine in accordance with embodiments of the technology disclosed herein. Fig.Figure 5 shows an example of a coherent recognition search engine in accordance with embodiments of the technology disclosed herein. Fig. Figure 6 shows an example of a spatially multiplexed optical search engine in accordance with embodiments of the technology disclosed herein. Fig. Figure 7 shows an example of a broadband coherent detection search engine according to embodiments of the technology disclosed herein. Fig. Figure 8 shows an example of a computing device according to embodiments of the technology disclosed herein. Fig. 9 shows an example method in accordance with embodiments of the technology disclosed herein. Fig. 10 is an example computer component that may be used to implement various features of the embodiments described in the present disclosure.

[0005] The figures do not claim to be complete and do not limit the present disclosure to the exact form shown. Detailed description

[0006] Content-addressable memory (CAM) is a special type of memory generally used in high-speed search applications. CAMs consist of hardware (circuitry) that compares an input pattern with stored binary data. A CAM's stored data is accessed not by its location, but by its content. A query word is entered into the CAM, the CAM searches for the query word in its content, and if it is found, the CAM returns the address of the location where the found content is located. CAMs are powerful, efficient, and fast. The input patterns and data in CAMs are represented by logical '0's and logical '1's (commonly referred to as binary CAM or bCAM).

[0007] Ternary CAM (TCAM) goes beyond the binary nature of bCAM and allows the storage and search for a third value, called a wildcard or "don't care" bit. A stored wildcard bit is treated as a match, regardless of whether the search criteria for the bit of the stored data word is a logical '0' or a logical '1'. In this way, TCAMs allow for additional complexity, as the input pattern can represent a range of patterns rather than just one. For example, an input pattern of "01XX0" might indicate a match for four separate stored words: 01000; 01010; 01100; and 01110. TCAMs perform the in-memory comparison operations massively in parallel, enabling extremely high throughput compared to older approaches.This increase in throughput enabled Internet packet routing, real-time network traffic monitoring, and more efficient access control lists, among other improvements in applications that require fast memory comparisons.

[0008] Data transmission is increasingly carried out using optical communication technologies. Transmitting data using optics enables significantly higher bandwidth compared to traditional electronic data transmission. Although applications often utilize integrated optics for data transmission, existing CAM implementations typically require electronic signals. Accordingly, costly optical-to-electrical conversions are required to transfer data from the optical to the electrical domain. Existing CAM and TCAM implementations are increasingly becoming bottlenecks due to the need for these conversions, reducing the overall efficiency and potential throughput within a network.

[0009] In a related copending application, U.S. Patent Application No. 16 / 905,674, filed June 18, 2020, which is incorporated herein by reference in its entirety, the inventors have disclosed an optoelectric TCAM encoding scheme and hardware platform that includes an optical matrix-vector multiplication engine based on dense wavelength demultiplexing in photonic integrated circuits. The inventors have also disclosed a similar encoding scheme implementing an all-optic (i.e., coherent) hardware platform in which single-wavelength light is encoded and matrix-vector multiplication is implemented using phase control in multipath interferometers.

[0010] The present disclosure discloses a method and system for an optoelectric TCAM using time-division multiplexing (TDM). Various embodiments consistent with the technology disclosed herein encode a search word on a wavelength in the time domain. Each bit position of the search word is associated with a set of time slots. A modulator is configured to represent a word stored in the TCAM, and the modulator is controlled by a programming controller in accordance with a TDM encoding scheme, which is explained in more detail below. An input routing element optically couples the optical search signal into the modulator. A mismatch is indicated if light can pass through the modulator during any time slot.In various embodiments, a common clock signal may be used by the input encoder and the programming controller to ensure that the bit position encoding between the input encoder and the modulator is synchronized. In various embodiments, a plurality of modulators may be connected in series or in parallel, with each modulator configured to represent a different word stored in the TCAM, so that the search word can be compared with a plurality of words stored in the TCAM in series or in parallel, respectively. In various embodiments, the TDM coding scheme may be combined with a wavelength division multiplexing (WDM) and / or a spatial multiplexing approach to enable a plurality of search words to be compared in parallel with a plurality of TCAM-stored words. In various embodiments, an optical TCAM search engine with integrated optics (e.g.,an integrated optical circuit / chip) or with free-space optics.

[0011] Fig. 1 shows an exemplary optical search engine 100 in accordance with embodiments of the technology disclosed herein. The exemplary optical search engine 100 is for illustrative purposes only and should not be construed as limiting the scope of the technology to only the illustrated embodiment. For simplicity, the optical search engine 100 is Fig. 1 with respect to the comparison of a search word and a TCAM-stored word through the use of an optical modulator 101, but in various embodiments, the optical search engine 100 may include a plurality of modulators 101, each associated with a TCAM-stored word, to enable the comparison of a plurality of TCAM-stored words with the search word. As in Fig.1, a search word 103 is received by an input encoder 102. In various embodiments, the optical search engine 100 may include one or more input encoders 102, each input encoder 102 configured to encode a search word 103 from one or more received search words 103. In some embodiments, an optical search engine input (in Fig. 1) may be configured to receive the one or more search words 103 and transmit each received one or more search words to the input encoder 102. The one or more search words 103 may be received via an electrical connection (e.g., via an electrical trace), via an optical routing element (e.g., a waveguide, an optical fiber), or a combination of both.

[0012] In various embodiments, the input encoder 102 is configured to encode the one or more received search words 103 in the time domain. In various embodiments, the bits of each of the one or more search words 103 are encoded on the same wavelength. In some embodiments, each search word 103 may be encoded on a plurality of wavelengths. Table 1 illustrates a TDM-based encoding scheme in accordance with the technology disclosed herein. Table 1 Search term bit value Coded search signal bit value (t1) Coded search signal bit value (t2) 1 A 0 0 0 A X 0 0

[0013] As shown in Table 1, each logical bit value is represented by two time slots t1, t2. If the search word bit value is a logical '1', light with an amplitude A is transmitted in the first time slot t1 associated with the bit position, and no light is transmitted in the second time slot t2. If the search word bit value is a logical '0', no light is transmitted in the first time slot t1 associated with the bit position, and light with an amplitude A is transmitted within the second time slot t2. And if the bit value at a bit position of the search word 103 is a wildcard bit 'X', no light is transmitted in either the first time slot t1 or the second time slot t2.In various embodiments, the time slots t1, t2 assigned to a bit position may comprise consecutive time slots, while in other embodiments, the time slots t1, t2 assigned to a bit position may comprise non-consecutive time slots. Although the encoding is discussed with reference to Table 1, a person of ordinary skill in the art would understand that the assignment of light / no light in the associated time slots t1, t2 may be reversed in various embodiments. For example, with the logical bit value "1", no light could be transmitted in the first time slot t1 and light with an amplitude could be transmitted in the second time slot t2. In some embodiments, the amplitude A may be the same for each bit position, while in other embodiments, at least one bit position may transmit light with a different amplitude A than at least one other bit position.In various embodiments, the amplitude A of each bit may decrease from a maximum amplitude A for the first time slot t1 to a minimum amplitude A for the nth time slot tn. In various embodiments, a more extensive amplitude scheme may be implemented in which the amplitude A for each time slot t may vary over a range of different amplitudes.

[0014] For simplicity, the technology disclosed herein is described in terms of encoding the search signal in time based on amplitude, but the encoding scheme can also be implemented based on other properties of the light. As a non-limiting example, the input encoder 102 can be configured to encode the optical search signal based on the polarization of the wavelength. For example, if the bit value of the search word is a logical '1', the encoding scheme could include light of a first polarization in the first time slot t1 and light of a second polarization in the second time slot t2, the reverse mapping for a logical '0', and omitting light of the first polarization and the second polarization in both time slots t1, t2 to represent a wildcard bit 'X'.In various embodiments, the placeholder value 'X' may be represented by including light of either the first polarization or the second polarization in both time slots t1, t2. As a further non-limiting example, the phase of the light of the single wavelength may be used, employing three different phases (two phases in combinations to represent the logical '1' and '0', and a third phase to represent a placeholder 'X'). In various embodiments, the placeholder value 'X' may be represented by including light of either the first phase or the second phase in both time slots t1, t2. The technology should not be interpreted as being limited to encoding based on amplitude, but may also be implemented based on phase, fundamental mode profile, or other degrees of freedom of the light.As a non-limiting example, different light modes may be used to distinguish between logical values ​​for the bits. A logical "1" may be represented by light of a first mode in the first time slot t1 and light of a second mode in the second time slot t2, a logical "0" may be represented by light of a second mode in the first time slot t1 and light of the first mode in the second time slot t2, and the placeholder value may be represented by light of a third mode in both the first time slot t1 and the second time slot t2. As a further non-limiting example, the placeholder value may be represented by there being no light in either the first mode or the second mode during the first time slot t1 and the second time slot t2. In such embodiments, the one or more routing elements may be configured to propagate at least three light modes.

[0015] In various embodiments, the encoded search signal 110 comprises 2N time slots, where N is the number of bit positions in the search word. As a non-limiting example, the search word 103 may comprise 8 bit positions (e.g., "01101000"), and the encoded search signal 110 may comprise 8 sets of associated time slots t (i.e., a total of 16 time slots t). In some embodiments, each associated time slot t1, t2 may comprise more than one time slot t. As a non-limiting example, the first time slot t1 may comprise two time slots t1-1, t12, and the second time slot t2 may comprise two time slots t2-1, t2-2. Assigning more than one set of time slots t1, t2 to a bit position may increase the time required for the comparison. In various embodiments, the time slots t1, t2 associated with a bit position may not be continuous (ie, the time slots may be separated by one or more time slots not associated with the bit position). A key may be included to decode the light signals at photodetector 109.

[0016] Although discussed in terms of encoding a search word on a single wavelength, in various embodiments, a search word may be encoded on a single frequency. As understood in the art, the frequency of a signal is the inverse of its wavelength, with the product of a signal's frequency and wavelength equal to the speed of light. Accordingly, a corresponding frequency can be determined from a wavelength by dividing the speed of light by the wavelength.

[0017] The encoded search signal 110 generated by the input encoder 102 may be coupled to an input optical routing element 104. The input optical routing element 104 may comprise an optical waveguide, an optical fiber, or other optical routing medium known in the art. The input optical routing element may be made of, among others, one or more of the following materials: gallium arsenide (GaAs), indium phosphide (InP), silicon (Si), silicon nitride (SiN), LiNbO3, glass, and silicon dioxide. In various embodiments, the input optical routing element 104 may be arranged in a silicon photonics package. One or more of the materials described in Fig. 1 can be arranged in a silicon photonics package. The optical input routing element 104 can include one or more coupling components (in Fig.1 not shown) arranged at the first end to couple the encoded search signal 110 from the input encoder 102 and at the second end to couple the encoded search signal 110 to the modulator 101. In various embodiments, a plurality of optical input routing elements 104 may be included, with each optical input routing element 104 configured to couple the encoded search signal 110 from the input encoder 102 to a modulator 101 of a plurality of modulators 101.

[0018] To perform a TCAM search operation, the modulator 101 may be temporally modulated to represent a word stored in the TCAM. In various embodiments, the modulator 101 may comprise one or more optical filters, including, but not limited to, waveguide resonators (e.g., ring modulators), multipath interferometers (e.g., Mach-Zehnder interferometers (MZIs)), photonic crystals (e.g., lithium niobate (LiNbO3)), phase shifters, polarization filters, grating filters, or other optical filter components that can be controlled by an electronic signal to tune the performance characteristics of the modulator 101. In various embodiments, the optical search engine 100 may comprise a plurality of modulators 101, each modulator 101 configured to compare a different word stored in the TCAM with the encoded search signal 110.In some embodiments, one or more modulators 101 may be configured in parallel, with a copy of the encoded search signal 110 optically coupled to an input of each of the one or more modulators 101. In some embodiments, one or more modulators 101 may be connected in series, with the output of a first modulator 101 optically coupled to the input of a second modulator 101, the output of the second modulator 101 optically coupled to a third modulator 101, and so on.

[0019] In various embodiments, a programming controller 106 may be used to time-tune one or more modulators 101 to represent the bit positions of one or more words stored in the TCAM. In various embodiments, the programming controller 106 may be configured to control the tuning of all modulators of the optical search engine, while in other embodiments, a plurality of programming controllers 106 may be included, with each of the plurality of programming controllers 106 configured to tune one or more modulators 101. Each modulator 101 may, in various embodiments, have an associated programming controller 106. Each modulator 101 may be communicatively connected to one or more tuning components (in Fig.1 not shown), wherein each of the one or more tuning components is capable of changing an optical characteristic of the modulator 101 to enable tuning of the performance of the modulator 101. In various embodiments, the one or more tuning components may include one or more devices configured to change the refractive index of the core or cladding of the modulator 101, control the number of free carriers, and / or produce a red- and / or blue-shift of the resonant wavelength of the modulator 101. Non-limiting examples of tuning components include heaters, electrical contacts, and other devices used to tune the resonant wavelength of optical components.In various embodiments, the programming controller 106 may comprise a processing component, a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or another type of processor found in computer systems. In some embodiments, the processing controller 106 may comprise a central processing unit (CPU), a graphics processing unit (GPU), or another processing component external to the optical search engine 100.

[0020] Each of the TCAM-stored words may, in various embodiments, be held in a TCAM word store 108. The TCAM word store 108 may comprise a non-transferable, machine-readable storage medium configured to store one or more TCAM words. Non-limiting examples of the TCAM word store 108 may comprise common forms of memory, including RAM, PROM, EPROM, FLASHEPROM, NVRAM, memristors, optical memory, among electrical, optical, or electro-optical storage media. In various embodiments, the TCAM word store 108 may comprise one or more types of volatile and / or non-volatile memory.In various embodiments, the TCAM word memory 108 may be a dedicated memory component for the optical search engine 100 configured to store TCAM-stored words, while in other embodiments, the TCAM word memory 108 may be a partition or other allocated space within a shared memory component. The TCAM word memory 108 may be implemented in a storage area network (SAN) or other networked storage solution. The programming controller 106 may be communicatively coupled to the TCAM word memory 108 and configured to retrieve a word stored in the TCAM to compare it with the encoded stored word by the modulator 101.In various embodiments, each of the TCAM-stored words may be associated with a specific modulator 101 within the optical search engine 100, such that the programming controller 106 would always apply the drive signal representing the TCAM-stored word to the same modulator 101. The programming controller 106 may maintain an association of TCAM-stored words with the modulators 101 in a dedicated memory component of the programming controller 106 (in . Fig. 1 not shown), in the TCAM word memory 108 or in another separate memory component communicatively coupled to the optical search engine 100 (in Fig.1 not shown), or a combination thereof. In some embodiments, each TCAM-stored word may be stored in the TCAM word memory 108 in a memory location associated with a particular modulator 101, with an identifier identifying the associated modulator 101, or a combination thereof. In some embodiments, each TCAM word may be stored in the TCAM word memory 108 in its encoded state, while in other embodiments, the TCAM words may be stored in an unencoded state.Storing the TCAM word memory in the encoded state reduces the latency between the TCAM word memory fetching and the application of the corresponding drive signal by the programming controller 106, but the storage requirements of the TCAM word memory 108 may be larger than when storing the TCAM words in the unencoded state (because the word size in the encoded state is at least doubled to have a logical value for each time slot associated with the bit position). The type of storage (encoded or unencoded) depends on the requirements of the application in which the TCAM is implemented.

[0021] When performing a TCAM operation on the search word 103 encoded according to Table 1, the programming controller 106 can be configured to tune the modulator to either allow or block light of the wavelength of the encoded word. Table 2 shows the operating state of the modulator 101 for each corresponding bit value of the word stored in the TCAM retrieved from the TCAM word memory 108. Table 2 TCAM Stored Word Bit Value Modulator (t1) Modulator (t2) 1 Block passage 0 passage Block X Block Block

[0022] As shown in Table 2, the modulator 101 can be configured to either pass or block light within the time slots t associated with the bit position of the word bit value stored in the TCAM. To represent a logical "1," the modulator 101 can be tuned to block light at the encoded wavelength during the first time slot t1 associated with the bit position and tuned to pass light at the encoded wavelength during the second time slot t2. In various embodiments, "blocking" light can involve removing light at a particular wavelength from a waveguide using one or more optical stopband or droplet filters, or by destructively interfering with light at the particular wavelength.To represent a logical '0', the modulator 101 can be tuned to transmit light at the encoded wavelength during the first time slot t1 associated with the bit position and tuned to block light at the encoded wavelength during the second time slot t2. To represent a placeholder value 'X', the modulator 101 can be tuned to block light at the encoded wavelength during both time slots t1, t2 associated with the bit position. In various embodiments, the programming controller 106 can be configured to apply a high-speed electrical signal to the one or more tuning components capable of changing the optical properties of the modulator 101, such that the modulator 101 can be configured according to Table 2 during the time slots t1, t2.

[0023] Using the encoding scheme described above, the optical search engine 100 can be configured to provide full optical ternary search functionality through TDM encoding. This eliminates the need for optical-to-electrical conversions, and the TCAM search can be performed more quickly. Using TDM encoding makes the optical search engine 100 more compatible with current photonics capabilities by reducing the need for optical buffers, which lowers system latency. Time-domain encoding also allows each TCAM-stored word to be represented with a single optical modulator 101 (which may include one or more optical elements (e.g., rings, MZIs, photonic crystals, etc.)), thereby reducing the footprint of the optical search engine 100 and allowing more TCAM-stored words to be compared to an input search word.Based on the logic states specified in Tables 1 and 2, light is only passed through modulator 101 during a given time slot t if a mismatch occurs between the bit position value of search word 103 and the corresponding bit position value of the word stored in the TCAM. Table 3 shows the results based on the encoded bit value on the optical search signal and the corresponding modulator 101. Table 3 Search for a word (t1, t2) Modulator (t1, t2) Match / Mismatch (Passed / Blocked) 1 / (A, 0) 1 / (block, passage) Match (blocked) 0 / (0, A) 0 / (passage, block) Match (blocked) 1 / (A, 0) 0 / (passage, block) Mismatch (passed through) 0 / (0, A) 1 / (block, passage) Mismatch (passed through) x / (0, 0) ANY Match (blocked) ANY X / (Block, Block) Match (blocked)

[0024] As shown in Table 3, when the bit of the coded word is a logical '1', the input (coded optical search signal from input encoder 102) contains single wavelength light with amplitude A during the first time slot t1 of the corresponding bit position and contains no single wavelength light during the second time slot t2 (i.e., there is no light on input routing element 104). If the bit value of the word stored in the TCAM at the corresponding bit position is also a logical '1', modulator 101 would be controlled such that modulator 101 is tuned to block single wavelength light during the first time slot t1 and to pass single wavelength light during the second time slot t2.Because modulator 101 is configured to block light of a single wavelength during the first time slot t1, the light on input routing element 104 cannot pass through modulator 101 and into an output routing element 107. And because there is no light on input routing element 104 during the second time slot t2, no light would pass through modulator 101 to output routing element 107, even though it is configured to pass light because there is no light on input routing element 104 during the second time slot t2. Accordingly, the absence of light on output routing element 107 indicates that the bit values ​​of search word 103 and the word stored in TCAM match at the respective bit positions.

[0025] If the bit of the coded word is a logic '0', the input (coded optical search signal from input encoder 102) contains no single wavelength light during the first time slot t1 of the corresponding bit position and contains single wavelength light with an amplitude A during the second time slot t2. If the bit value of the word stored in the TCAM at the corresponding bit position is also a logic '0', the modulator 101 would be controlled such that the modulator 101 is tuned to pass single wavelength light during the first time slot t1 and block single wavelength light during the second time slot t2.Since modulator 101 is configured to pass single-wavelength light during the first time slot t1, no light would pass through modulator 101 and into output routing element 107 (because no single-wavelength light is present in the signal during the first time slot t1). And because modulator 101 is configured to block single-wavelength light during the second time slot t2, light on input routing element 104 is not allowed to pass through modulator 101 and into an output routing element 107. Accordingly, the absence of light on output routing element 107 indicates that the bit values ​​of search word 103 and the word stored in TCAM match at the respective bit positions.

[0026] Furthermore, if the bit value of the bit position of the word stored in the TCAM is a placeholder value 'X', regardless of whether the input is a logical '1' or '0', no light is present on the output waveguide 107. To represent the placeholder value 'X' (or the "don't care" bit, as it is also called), the modulator is controlled by the programming controller 106 to block light of the only wavelength at which the search word 103 is encoded during both time slots t1, t2. Therefore, a match is always indicated for that bit position, regardless of the value at the corresponding bit position of the search word 103.Similarly, if the search word 103 contained a placeholder value "X" at a bit position, a match would always be indicated, regardless of the corresponding bit value at that bit position in the TCAM memory word, since there would be no light on the input routing element 104 and therefore no light would pass through the modulator 101 to the output routing element 107.

[0027] A mismatch at a particular bit position is indicated by the presence of light at the output routing element 107. As can be seen in Table 3, if the bit position of the input is a logical "1" but the bit position of the word stored in the TCAM is a logical "0," light is passed to the output routing element 107 during the first time slot t1. The modulator 101 is configured to pass light of the single wavelength, and the input passes light with an amplitude A of the single wavelength to the input routing element 104 during the first time slot t1. Therefore, the light would pass through the modulator 101 to the output routing element 107. With reversed bit values, there would be light on the output routing element 107 during the second time slot t2, indicating the mismatch between the search word 103 and the TCAM search word at the respective bit position.

[0028] In various embodiments, the encoding of the search input 103 may be performed in accordance with a clock signal (CLK) from the clock 105. The CLK signal may be used to identify each of the time slots t1, t2 associated with each respective bit position of the search word 103. In various embodiments, the CLK signal from the clock 105 may also be used by the programming controller 106 to generate the drive signal used to configure the modulator 101 to represent the word stored in the TCAM. In some embodiments, the programming controller 106 may include one or more circuits to delay the CLK signal from the clock 105 so that the programming controller 106 applies the drive signal synchronously with the encoded search signal 110 when it is optically coupled into the modulator 101.In some embodiments, a second CLK signal (different from the CLK signal used by input encoder 102) may be sent to programming controller 106 from the same clock 105 or a different clock source.

[0029] As in Fig.1, in various embodiments, a photodetector 109 may be optically coupled to a result end of the output routing element 107. The photodetector 109 may be configured to detect whether light is present on the output routing element 107 and thereby detect the mismatch for the respective bit position. In various embodiments, the photodetector 109 may comprise a photodiode or other type of circuit-like detector for photons. In various embodiments, each photodetector 109 may comprise circuitry configured to output a memory address corresponding to the stored word represented by the modulator 101. In some embodiments, each photodetector 109 may provide a match / mismatch indication to an encoder circuit (in Fig.1 not shown) configured to generate the memory address corresponding to the stored word of modulator 101 for which a match indication is received from a photodetector 109. In some embodiments, each photodetector 109 may provide the indication to processing circuitry within optical search engine 100 (in Fig. 1 not shown) configured to identify the memory address associated with the specific TCAM memory word represented by modulator 101 and output an electrical signal to a memory controller or other device controller for accessing the memory.

[0030] In various embodiments, the photodetector 109 can be configured to integrate the mismatches over time for the duration of the search word 103 (i.e., for the duration of the 2N time slots t), allowing the photodetector 109 to determine the sum of all mismatches between the search word 103 and the TCAM-stored word represented by the modulator 101. In this way, the degree of mismatch between the search word 103 and the respective TCAM-stored word is determined. In various embodiments, the photodetector 109 can include circuitry configured to perform the integration of the light for the duration of the search, while in some embodiments, the photodetector 109 can be configured with a long TC time constant to allow the integration to occur in the photodetector 109.In some embodiments, the photodetector 109 may be configured to mark or otherwise identify at which bit positions a mismatch has occurred.

[0031] Although in Fig. While a single modulator 101 is depicted in Figure 1, in various embodiments, the optical search engine 100 may include a plurality of modulators 101, each modulator 101 configured to represent a different word stored in the TCAM. In this way, a plurality of stored words may be compared to the search word 103 during the same search operation. Fig.Figure 2 illustrates an exemplary optical search engine 200 in accordance with embodiments of the technology disclosed herein. The exemplary optical search engine 200 is for illustrative purposes only and should not be construed as limited to the depicted embodiment. Where references are common between figures, the discussion regarding those references should be interpreted as applicable, unless expressly stated otherwise.

[0032] As in Fig. 2, the optical search engine 200 includes a TCAM word bank 201 configured to compare a single search word 103 with M TCAM-stored words. Each TCAM search word is represented by a modulator 101a-M (generally "the modulator 101," collectively "the modulators 101"). In various embodiments, each modulator 101 may have its own programming controller 106 (as shown in Fig.2), while in other embodiments one or more modulators 101 are controlled by a single programming controller 106 (in Fig. 2 not shown). In various embodiments, an electrical drive signal 204a-204M (generally "the electrical drive signal 204", together "the electrical drive signals 204") is applied to a respective modulator 101 to set the state of the modulator 101 within each time slot t. The electrical drive signal 204 is similar to the drive signal from the programming controller 106, which is described with respect to Fig.1. In various embodiments, the electrical drive signals 204 may be applied to each modulator 101 (and / or one or more tuning components associated with each modulator 101) from the same programming controller 106, wherein the programming controller 106 is configured to provide a separate electrical drive signal for each of a plurality of TCAM-stored words from the TCAM word memory (in Fig. 2 not shown) such that each modulator 101 is driven to represent a different TCAM-stored word. In other embodiments, one or more of the electrical drive signals 204 may be generated by a first programming controller 106 and one or more of the electrical drive signals 204 may be generated by a second programming controller 106. In some embodiments, each modulator 101 may be Fig.2 have a dedicated programming controller 106 configured to generate and apply the electrical drive signal 204 for the respective word stored in the TCAM.

[0033] Although in Fig. 2, the optical search engine 200 would include the TCAM word memory 108 and the clock 105, which are related to Fig. 1. The TCAM word memory 108 and the clock generator 105 are in Fig. 2 omitted to facilitate understanding of the Fig. 2, and a person skilled in the art would understand that the omitted components would be present in the implementation of the optical search engine 200. As shown in Fig.2, the encoded search word 110 is output from the input encoder 102 and optically coupled to a 1×M splitter 203. In various embodiments, the 1×M splitter 203 is configured to generate M encoded search signals 110a-M (generally "the encoded search signal 110," collectively "the encoded search signals 110"). In this way, the search word 103 can be compared in parallel with the M TCAM-stored words of the TCAM word bank 201. In various embodiments, the input encoder 102 and the 1×M splitter 203 can be integrated into the same component, while in some embodiments, the input encoder 102 can be configured to generate M versions of the encoded search signal 110 without requiring any generated signal to be split.

[0034] The 1×M splitter 203 may be configured to optically couple each of the encoded search signals 110 to a respective modulator 101 of the TCAM word bank 201. In various embodiments, each output of the 1×M splitter 203 may be optically coupled to a respective modulator 101 using an associated input routing element 104a-M (generally "the input routing element 104," collectively "the input routing elements 104"). The input routing element 104 may include, among other things, one or more waveguides, an optical fiber, a coupler component, or other optical elements capable of routing light from one point to another. In some embodiments, the CLK signal from clock 105 may be used by 1 × M splitter 203 to control the output of the M copies of encoded search signal 110.The 1×M splitter 203 may include one or more clock delays configured to delay the CLK signal from the clock 105 so that the output encoded search signal 110 is synchronized with the respective modulator 101, such that the time slots t associated with a bit position of the search word 103 are synchronized with the time slots t associated with the corresponding bit position of the TCAM memory word represented by the respective modulator 101. In some embodiments, the 1×M splitter 203 may have its own CLK signal from a different clock source.

[0035] Each modulator 101 can be optically coupled to a dedicated photodetector 109a-109M (generally "the photodetector 109", collectively "the photodetectors 109") via a corresponding output routing element 107a-107M (generally "the output routing element 107", collectively "the output routing elements 107"). Each of the Fig. 2 shown photodetectors 109 can be compared with Fig. 1 discussed photodetector 109. The dedication of one photodetector 109 for each modulator 101 in Fig. 2 allows the parallel dedication of the results of comparing the search word with each word stored in the TCAM.

[0036] Fig. 3 shows another exemplary optical search engine 300 in accordance with embodiments of the technology of the present disclosure. The example optical search engine 300 is provided for illustrative purposes and should not be interpreted as limited to only the illustrated embodiment. Where references are common between figures, it should be interpreted that the discussion regarding those references applies unless expressly stated otherwise. The optical search engine 300 of Fig.3 is configured so that a search word 103 can be compared with a plurality of TCAM-stored words not in parallel, but in series. As shown in Fig.3, each modulator 101 can be assigned to a respective wavelength λ (i.e., each word stored in the TCAM can be assigned to a respective wavelength λ). The input encoder 102 can be configured to encode the search word 103 at each of the stored word wavelengths λ1-λM (generally, "the stored word wavelength λ", collectively, "the stored word wavelengths λ"), thereby generating a multi-wavelength encoded search signal 310. In various embodiments, the input encoder 102 can be configured to output the multi-wavelength encoded search signal 310 to a search routing element 302. The search routing element 302 can comprise an optical element similar to those of the input routing element 104 and the output routing element 107, which are described with respect to Fig. 1 in various embodiments were discussed.

[0037] In contrast to the parallel configuration of Fig. 2, each of the modulators 101 may be arranged in series on the search routing element 302. As shown, the search routing element 302 may optically couple the multi-wavelength encoded search signal 310 into the first modulator 101a. As shown in Fig.3, the first modulator 101a is connected to the stored word wavelength λ1. Accordingly, the modulator 101a can be configured to transmit light of any other wavelength λ during all time slots t, but operate with light of the first stored word wavelength λ1. In various embodiments, the modulator 101a can be configured to either transmit light of the first stored word wavelength λ1 with all other wavelengths within the multi-wavelength encoded search signal 310, or be configured to block (e.g., remove, destructively interfere with) light of the first stored word wavelength λ1. The search routing element 302 can optically couple the output of the first modulator 101a into the second modulator 101b, and the second modulator 101b can be configured to operate with light of the second stored word wavelength λ2. As shown in Fig.3, the search routing element 302 may further optically couple the output of a previous modulator 101 into a subsequent modulator 101.

[0038] With multiple wavelengths included in the multi-wavelength-encoded search signal 310, a single photodetector located at the end of the search routing element 302 would result in difficulties in determining with which of the words stored in the TCAM the search signal has at least one bit mismatch. In some embodiments, the search routing element 302 may be configured to optically couple the output of the M-th modulator 101M to an optical demultiplexer 301 configured to separate the multi-wavelength-encoded search signal 310 into one or more individual wavelengths λ that remain in the multi-wavelength-encoded search signal 310 after it has passed through all modulators 101. For each modulator 101, if the search word matches the associated stored TCAM word, no light of wavelength λ of the associated stored word would remain on the search routing element 302 (iefrom the multi-wavelength encoded search signal 310 at the output end of the search routing element 302. Any light remaining on the search routing element 302 and entering the optical demultiplexer 301 indicates that the search word 103 had at least one bit mismatch with the associated TCAM-stored word of the remaining stored word wavelength λ. In some embodiments, each modulator 101 can be configured to operate as a bandpass filter. The "block" state of the modulator may be similar to an "ON" state of the modulator 101 (i.e., the modulator 101 is configured to attenuate the respective stored word wavelength λ) and the "pass" state of the modulator may be similar to an "OFF" state of the modulator 101 (i.e., the modulator 101 is configured to pass all wavelengths of light).

[0039] The optical demultiplexer 301 can be configured to output each of the separate stored word wavelengths λ to a respective output routing element 107 associated with the respective stored word wavelength λ. The output routing elements 107 can be similar to the output routing elements 107 described with respect to the Fig. 1 and Fig. 2 in various embodiments. If no light is output at the output routing element 107 associated with a respective stored word wavelength λ, this indicates that the TCAM-stored word associated with that respective stored word wavelength λ matches the search word 103. In various embodiments, a photodetector 109 (similar to the photodetectors 109 described with respect to Fig. 1 and Fig.2) is optically coupled to an output end of each respective output routing element 107 to detect light of the associated stored word wavelength λ3. As a non-limiting example, the third photodetector 109c may detect light of the third stored word wavelength λ3 and indicate that a mismatch has occurred if the search word 103 and the stored TCAM word represented by the third modulator 101c have at least one mismatched bit. In various embodiments, the third photodetector 109c may be configured to detect the degree of mismatch between the search word and the third TCAM stored word represented by the modulator 101c.

[0040] The optical search engine 300 delays the detection of a match or mismatch for each bit position until the multi-wavelength encoded search signal 310 has traversed the entire length of the search routing element 302 (ie, has traversed all modulators 101). Fig. Figure 4 shows another example of an optical search engine 400 in accordance with the technology disclosed herein. The optical search engine 400 is shown for illustrative purposes only and should not be interpreted as limiting the scope of the technology to the illustrated embodiment. Where references are common between the figures, it should be interpreted that the discussion regarding these references applies unless expressly stated otherwise. In contrast to the optical search engine 300, which is described with respect to Fig. 3, the optical search engine 400 couples Fig.4 the associated photodetector 109 for each TCAM search word optically to the respective modulator 101. As in Fig.4, an output routing element 402a-402M (generally "the output routing element 402", collectively "the output routing elements 402") may be optically coupled to each respective modulator 101. Instead of waiting for the multi-wavelength encoded search signal 310 to pass through all modulators, a mismatch may be detected in sequence with the comparison at modulator 101. As a non-limiting example, photodetector 109a may be optically coupled to the first modulator 101a through the first output routing element 402a. When a mismatch occurs, the light of the first stored word wavelength λ1 may be output from the modulator at the first output routing element 402a and detected by photodetector 109a before the multi-wavelength encoded search signal 310 passes through all other modulators 101.Using the optical search engine 400, mismatch detection can be performed without the need for an optical demultiplexer at the end of the search routing element 302.

[0041] In various embodiments, the optical search engine of the TDM-based optical TCAM may be implemented using coherent detection (i.e., homodyne detection). Fig. Figure 5 shows an example of a coherent detection search engine 500 in accordance with embodiments of the technology disclosed herein. The example of a coherent detection search engine 500 is for illustrative purposes only and should not be understood to limit the scope of the technology to the illustrated embodiment. Where references are common between figures, it should be interpreted that the discussion regarding those references applies unless expressly stated otherwise. As in Fig.5, the search word 103 may be encoded by the input encoder 102 to produce a single wavelength encoded search signal 110, similar to the one described with respect to Fig. 1 and Fig. 2. In various embodiments, a 1 × M splitter 203 may be included to generate M copies 115a-115M of the encoded search signal 110 (generally "the encoded search signal 115", collectively "the encoded search signals 115"). Although in Fig. 5 not shown, a clock generator (similar to the one in relation to Fig. 1) may provide a CLK signal to the input encoder 102, which may use the CLK signal to apply the coding scheme discussed above with reference to Table 1.

[0042] In various embodiments, each TCAM-stored word to be compared with the search word 103 is encoded at the same wavelength on which the search word 103 is encoded. As in Fig.5, a plurality of TCAM-stored words 525 may be extracted from the TCAM word memory 108 and supplied to a multi-word encoder 505. In various embodiments, the multi-word encoder 505 may include one or more types of processors or processing circuits, similar to the one described above with respect to Fig.1. The multi-word encoder 505 may be configured to encode each of the words stored in the TCAM to an optical signal of the same wavelength as the encoded search words 115. In various embodiments, a light source 515 may be optically coupled to the multi-word encoder 505 and configured to provide light of the single wavelength associated with the search word 103 (i.e., the single wavelength comprising the encoded search words 115) to the multi-word encoder 505. In various embodiments, the light source 515 may comprise one or more types of light-emitting diodes (LEDs; possibly with subsequent narrowband filters), single-wavelength lasers, vertical cavity surface-emitting lasers (VCSELs), or other light-emitting sources.In various embodiments, light source 515 may be communicatively coupled to input encoder 102 so that input encoder 102 may encode search word 103 onto a single-wavelength optical signal from light source 515. In some embodiments, input encoder 102 may be communicatively coupled to a separate light source similar to light source 515. When the search word is received in the optical domain, an injection-blocking light source may be used by input encoder 102 to encode the received optical search word 103 onto a single-wavelength signal from coherent recognition search engine 500.

[0043] In various embodiments, the input encoder 102 and the multiword encoder 505 may each use a clock signal CLK to perform the encoding, similar to the clock 105 signal described above with respect to Fig. 1 was discussed. As in Fig.5, the input encoder 102 may receive a search word clock signal CLK SW received, and the multiword encoder 505 can receive a word clock signal CLK stored in the TCAM TCAM -received. In various embodiments, the search word clock signal CLK SW and the word clock signal CLK stored in the TCAM TCAM be the same clock signal, while in other embodiments the search word clock signal CLK SW and the word clock signal CLK stored in the TCAM TCAM may include different clock signals. In various embodiments, the search word clock signal CLK SW and the TCAM-stored word clock signal CLK TCAM by the same clock (such as CLK 105 from Fig. 1), while in other embodiments the search word clock signal CLK SW can be generated by a first clock source and the TCAM-stored word clock signal CLK TCAMcan be generated by a second clock source.

[0044] The multi-word encoder 505 may include multiple optical modulators (in Fig. 5), wherein one or more of the optical modulators are configured to generate an encoded TCAM word signal 530a-530M (generally "the encoded TCAM word signal 530," collectively "the encoded TCAM word signals 530") for each of the TCAM stored words 525 retrieved from the TCAM word memory 108. Each TCAM word signal 530 may be encoded in a manner similar to the encoded search signal 115. That is, unlike the embodiments discussed in FIG. 14, each TCAM stored word 525 is encoded as a propagating optical signal rather than as a state of a modulator. Table 4 illustrates the TDM-based encoding scheme in accordance with the technology disclosed herein. Table 4 TCAM Stored Word Bit Value TCAM word signal (t1) TCAM word signal (t2) 1 0 A 0 A 0 X 0 0

[0045] As shown in Table 4, each logical bit value is represented by two time slots t1, t2, similar to the coded search signals 115. If the TCAM-stored word bit value is a logical '0', light with an amplitude A is transmitted within the first time slot t1 associated with the bit position, and no light is transmitted within the second time slot t2. If the bit value of the TCAM memory word is a logical '1', no light is transmitted in the first time slot t1 associated with the bit position, and light with an amplitude A is transmitted within the second time slot t2. And if the bit value at a bit position of the TCAM memory word is a dummy bit 'X', no light is transmitted in either the first time slot t1 or the second time slot t2.In various embodiments, the time slots t1, t2 assigned to a bit position may comprise consecutive time slots, while in other embodiments, the time slots t1, t2 assigned to a bit position may comprise non-consecutive time slots. Although the encoding is discussed with reference to Table 1, a person of ordinary skill in the art would understand that the assignment of light / no light in the associated time slots t1, t2 may be reversed in various embodiments. For example, with the logical bit value "0", no light could be transmitted in the first time slot t1 and light with an amplitude could be transmitted in the second time slot t2. In some embodiments, the amplitude A may be the same for each bit position, while in other embodiments, at least one bit position may transmit light with a different amplitude A than at least one other bit position.The encoding of each TCAM-stored word 525 may be performed in a manner similar to the search word 103 discussed above with reference to Table 1.

[0046] Using the coding scheme of Tables 1 and 4, the coherent detection search engine 500 can be configured to implement the ternary search functionality according to the technology disclosed herein. Table 5 shows the coherent detection results of a coded search signal 115 and a TCAM word signal 530. Table 5 Search for a word (t1, t2) TCAM Stored Word (t1, t2) Match / mismatch (passed / blocked) 1 / (A, 0) 1 / (0, A) Match (blocked) 0 / (0, A) 0 / (A, 0) Match (blocked) 1 / (A, 0) 0 / (A, 0) Mismatch (passed through) 0 / (0, A) 1 / (0, A) Mismatch (passed through) X / (0, 0) ANY Match (blocked) ANY X / (0, 0) Match (blocked)

[0047] As shown in Table 5, if the value of search word 103 at a bit position is a logical '1', the encoded search signal 115 would contain light with an amplitude A of the single wavelength in the first time slot t1 associated with the bit position, and no light of the single wavelength would be output during the second time slot t2 (i.e., the amplitude A is zero). If the corresponding bit position of word 525 stored in TCAM is also a logical '1', the corresponding TCAM word signal 530 would contain no light with an amplitude during the first time slot t1, and light with an amplitude A would be included in the second time slot t2.As will be explained in more detail below, the alternating inclusions of light with an amplitude A in the associated time slots t cancel each other out, resulting in no light being detected by an associated symmetric photodetector array 509 (which may include one or more photodetectors that are the same as or similar to the photodetectors 109 discussed above with respect to FIG. 14 in various embodiments). A mismatch is indicated when the encoded search signal 110 and the TCAM word signal 530 each contain light with an amplitude A during the same time slot t, as discussed in more detail below with respect to the multiplier region 520. In this way, the comparison can be performed in free space—without the need for any optical transmission media (e.g., waveguides, fiber optics, etc.).

[0048] As in Fig.5, each coded search signal 115 propagates from the 1 × M splitter 203 toward an optical interleaver 510 along the x-axis. The optical interleaver 510 is configured to route the input signals (i.e., the coded search signals 115 and the TCAM word signals 530) to a respective multiplier of the multiplier section 520. The optical interleaver 510 is configured to route each coded search signal 115 to a first input of a respective multiplier and each TCAM word signal 530 to a second input of a respective multiplier. As shown in Fig.5, each multiplier in the multiplier region 520 is connected to a respective encoded search signal 115 and a respective TCAM word signal 530. In some embodiments, the optical interleaver 510 may be implemented using an optical polarizing beam splitter. In various embodiments, the optical interleaver 510 may include a polarizer configured to transmit the respective encoded search signal 115 having a first polarization and reflect the respective TCAM word signal 530 having a second polarization. In other embodiments, the optical interleaver 510 may be implemented such that the respective encoded search signal 115 and the respective TCAM word signal 530 are spatially offset on the surface of the optical interleaver 510. In this way, the multipliers of the multiplier region 520 may be configured to multiply the source signal (i.e.Identify either the encoded search signal 115 or the TCAM word signal 530 based on the signal's position. In various embodiments, each encoded search signal 115 may propagate through an optical routing element, similar to the input routing element 104 described with respect to FIG. Fig. 1, while in other embodiments, each coded search signal 115 may propagate in free space (e.g., air, vacuum). Free-space optics is an optical communications technology that uses light propagating in free space (e.g., air, oxide, vacuum, an optical transmission medium (e.g., a slab waveguide)) rather than an optical medium (e.g., an optical fiber).

[0049] Also, each of the TCAM word signals 530, each representing a plurality of TCAM-stored words 525, propagates from the multiword encoder 505 toward the optical interleaver 510 along the y-axis in a similar manner to the encoded search signals 115. The interleaver 510 may include a polarized beamsplitter or other optical element configured to produce a resultant signal containing both signals at different polarizations, different positions, different modes, or a combination thereof. In various embodiments, the interleaver 510 may include a mirror-based pinhole array, in which a plurality of pinholes are included in a mirror to allow a portion of the light to pass through the pinhole while blocking the light intersecting the mirror at non-pinhole positions.In various embodiments, the interleaver 510 may passively propagate the coherent light signals, while in other embodiments, an active optical interleaver 510 may be used. In various embodiments, the TCAM word signals 530 propagate perpendicular to the encoded search signals 115. The interleaver 510 may include a partially reflective element configured to allow the encoded search signals 115 to pass through the interleaver 510 while the TCAM word signals 530 can be reflected by 90°, so that the encoded search signals 115 and the TCAM word signals 530 propagate parallel to each other and in the same direction. In this way, one of the coded search signals 115 and a corresponding TCAM word signal 530 at the junction of the interleaver 510 are arranged relative to each other such that each pair of input signals (ieEach pair of coded search word 115 and TCAM word signal 530 is optically coupled to the inputs of the corresponding multiplier. As a non-limiting example, coded search word 115b is passed through interleaver 510 at junction 550, while TCAM word signal 530b is reflected by 90° at junction 550. As mentioned above, within each pair of input signals, coded search word 115 can be optically coupled to the first input of the multiplier and TCAM word signal 530 can be optically coupled to the second input of the multiplier.

[0050] In various embodiments, after the interleaver 510, the pair of input signals (consisting of a coded search signal 115 and a TCAM word signal 530 with different polarizations, different positions, different modes, or a combination thereof) are each fed to a multiplier within the multiplier section 520. Each multiplier may include an optical element capable of comparing the TCAM word signal 530 with the respective coded search signal 115, such as (but not limited to) a multipath interferometer. In various embodiments, each multiplier may be configured to perform homodyne detection (i.e., single-wavelength detection). As a non-limiting example, the first multiplier of the multiplier section 520 is configured to receive the first encoded search signal 115a and the first TCAM word signal 530a.The first multiplier may be configured to use the first TCAM word signal 530a as a reference signal (i.e., the local oscillator signal used in a conventional homodyne detection method). As described above, a photodetector of the symmetric photodetector array 509 is optically coupled to a respective multiplier output of the multiplier section 520. Each branch of the respective multiplier contains the sum of the encoded search signal 115 and the TCAM word signal 530 or the difference between the encoded search signal 115 and the TCAM word signal 530. When the reference signal matches the sample signal (in this context, the first coded search signal 115a), a non-zero amount of light is detected by the symmetric photodetector array 509 (as shown in Table 5), indicating a mismatch between the search word 103 and the word 525 stored in the TCAM.However, if the bit position of the signals does not match (e.g., the bit of the encoded search signal 110a is a logical "1," but the bit of the first TCAM-stored word signal 530a is a logical "0"), the first multiplier may be configured such that the product between the output of each arm of the first multiplier results in zero light being detected by the symmetric photodetector array 509, thereby indicating a match between the search word 103 and the TCAM-stored word 525. In some embodiments, the first multiplier may be configured such that an output of the multiplier is activated when an amplitude A is present in the reference signal (in this non-limiting example, the first TCAM word signal 530a).

[0051] In various embodiments, the coherent detection search engine 500 may be implemented using optical transmission media, such as planar integrated optics. In such embodiments, each Fig.5 may propagate through an optical routing element, including, but not limited to, a waveguide or an optical fiber. To avoid crossings between the signals, in various embodiments, each pair of optical routing elements (e.g., 115c and 530c) may be implemented on a different layer of an integrated optical chip. In various embodiments, the multiplier region 520 may be disposed in one of the multiple layers of the integrated optical chip, and the signals from each layer may be coupled into the same layer as the multiplier region 520. In various embodiments, the coupling may be implemented through the use of one or more coupling elements, including, but not limited to, mirrors, gratings, or other coupling components.In various embodiments, the multiplier region 520 may be distributed across the layers of the integrated optical chip / circuit, eliminating the need for an additional coupling component. The optical interleaver 510 may comprise a plurality of multipath interferometers within the integrated optical chip / circuit. In some embodiments, the TCAM word signals 530 may be distributed across the integrated optical chip / circuit, rather than as shown in FIG. Fig. 5, propagate perpendicular to the encoded search signals 115, with each signal connected to an input of an associated multipath interferometer. In some embodiments, if the crossing losses are acceptable (i.e., within the requirements for a particular application), one or more of the multiple layers may be combined into a single layer with crossings between the optical routing elements.

[0052] The information in relation to Fig.The embodiments discussed in Figures 1-5 relate to the encoding of a single query word 103 using the TDM encoding scheme shown in Table 1-5. Using the TDM encoding scheme, the optical search engines 100400 and the coherent recognition search engine 500 reduce the number of optical elements required to implement the optical TCAM, thereby increasing the energy efficiency of the TCAM device. In some embodiments, one or more other types of multiplexing may be used in combination with the TDM encoding scheme to enable multiple query words to be compared in parallel against a plurality of words stored in the TCAM.As a non-limiting example, spatial multiplexing using free-space optics or integrated optical chips / circuits may be used to allow multiple query words to be compared simultaneously against the plurality of words stored in the TCAM. Fig.6 shows an example of a spatially multiplexed optical search engine 600 in accordance with embodiments of the technology disclosed herein. The example of a spatially multiplexed optical search engine 600 is for illustrative purposes only and should not be construed as limiting the scope of the technology disclosed herein to only the illustrated embodiment. Where references are common between the figures, it should be interpreted that the discussion regarding those references applies unless expressly stated otherwise. The spatially multiplexed optical search engine 600 is similar to the coherent detection search engine 500 described with respect to Fig. 5, only with multiple keywords encoded with a single wavelength.

[0053] As in Fig.6, a plurality of search words SWa-SWN (generally "the search word SW", collectively "the search words SW") are received by an input encoder 602, where N is the total number of search words SW received by the input encoder 602. In various embodiments, the plurality of search words SWa-SWN may be simultaneously received from a search word source (in Fig. 6 not shown), while in other embodiments, one or more of the plurality of search words SWa-SWN may be received before another or more of the plurality of search words SWa-SWN. In various embodiments, the input encoder 602 may be similar to the input encoder 102 described with respect to Fig.1-5, but the input encoder 602 is configured to generate a coded search signal 610a610N (generally "the coded search signal 610", collectively "the coded search signals 610") for each of the received search words SWa-SWN. In various embodiments, all of the coded search signals 610 may have the same wavelength, with each coded search signal 610 having a different search word SW encoded thereon. The encoding performed by the input encoder 602 may be the same as that described above with respect to Fig. 1-5. The multiple TCAM word signals 530 may be generated in a similar manner as in Fig. 5. In particular, M TCAM word signals 530 may be generated, where M is the total number of TCAM-stored words to be compared with the plurality of search words SW.

[0054] First and second imaging optics arrays 620 and 630, respectively, may be configured to fan out each encoded search signal 610 and each TCAM word signal 530. In various embodiments, the first imaging optics array 620 and the second imaging optics array 630 may comprise an array of cylindrical lenses configured to fan out the optical signals such that the width of each optical signal (e.g., each encoded search word 610) is wide enough to intersect all perpendicular optical signals (e.g., all TCAM word signals 530). In various embodiments, the first and / or second imaging optics arrays 620, 630 may be implemented as one or more optical imaging elements, including, but not limited to, lenses, apertures, filters, polarization rotators, mirrors, beamsplitters, pinholes, and others.As a non-limiting example, assume that the output of input encoder 602 comprises an N × 1 vector and the output of multiword encoder 505 is an M × 1 vector. As shown in . Fig.As shown in Figure 6, the first imaging optical array 620 can be configured to fan out the encoded search signal 610c to a length of a free-space optical interleaver 650 along the y-axis, and the second imaging optical array 630 can be configured to fan out each TCAM word signal 530c to a length of the free-space optical interleaver 650 along the x-axis. As shown, the free-space optical interleaver 650 is represented by a cube in which a diagonal face is disposed. In various embodiments, the free-space optical interleaver 650 may be implemented as a lens arranged along the diagonal of the illustrated cube, while in other embodiments, the free-space optical interleaver 650 may be implemented as a first prism and a second prism coupled together along the diagonal to form a transition point.The diagonal (be it a lens, a transition point between two prisms, or another type of optical interleaver) of the free-space optical interleaver 650 corresponds to the interleaver 510, which is . Fig.5, wherein the diagonal is configured such that the fanned-out encoded search signals 610 travel straight along the x-axis and the fanned-out TCAM word signals 530 are reflected such that the TCAM word signals 530 change direction from propagating along the z-axis to propagating along the x-axis in the same direction as the encoded search signals 610. In various embodiments, the imaging optics arrays 620, 630 may include at least one optical imaging element configured to output a fanned-out signal to a respective track or channel. The number of tracks may correspond to the number of encoded search words 115 or the number of TCAM word signals 530 (i.e., N tracks for the encoded search words 115 and M tracks for the TCAM word signals 530).In other embodiments, a plurality of tracks may be optically coupled to a respective optical imaging element within the imaging optics arrays 620, 630.

[0055] Accordingly, each coded search signal 610 is configured to be allocated and forwarded in parallel to each of the TCAM word signals 530. The fanned-out signals essentially represent a matrix-matrix multiplication, with each matrix having a size of N × M. In various embodiments, the pairs of input signals may be optically coupled to each one of a plurality of multipliers within the multiplier section 640. Each of the plurality of multipliers in the multiplier section 640 may, in various embodiments, be similar to the multipliers in the multiplier section 520, which may be Fig. 5 were discussed. As in Fig.6, the multiplier section 640 may include an N × M grid of multipliers optically coupled to the output of the free-space optical interleaver 650. For simplicity, each multiplier within the multiplier section 640 may be written as multiplier 640ij, where i identifies the encoded search signal 610 and j identifies the TCAM word signal 530. As a non-limiting example, the black box on the diagonal in the free-space optical interleaver 650 indicates the intersection where the third encoded search signal 610c and the third TCAM word signal 530c intersect within the free-space optical interleaver 650. The illustrated example is not to scale and should not be interpreted as such. The multiplier 640cc may perform a similar comparison as shown in Fig.5. The output of the multiplier 640cc may be optically coupled to a corresponding photodetector 660cc of a photodetector array 660. The photodetector array 660 may comprise an N × M grid of photodetectors, similar to the photodetectors 109 described with respect to Fig. 1-5, wherein each column in the photodetector array 660 is associated with a respective TCAM-stored word 525 and each row in the photodetector array 660 is associated with a respective search word SW.

[0056] In other embodiments, the TDM coding scheme may be combined with wavelength-based multiplexing (i.e., WDM) to enable the parallel comparison of a plurality of search words SW with a plurality of words stored in the TCAM. Fig.Figure 7 shows an example of a wideband coherent detection search engine 700 in accordance with embodiments of the technology disclosed herein. The example wideband coherent detection search engine 700 is for illustrative purposes only and should not be construed as limiting the scope of the technology to only the illustrated embodiment. Where references are common between figures, it should be interpreted that the discussion regarding those references applies unless explicitly stated otherwise. As in Fig.7, a plurality of search words SWa-SWN (generally "the search word SW", collectively "the search words SW") may be received by an input encoder 702. The input encoder 702 may be configured to encode each of the search words SW to an assigned wavelength from a plurality of wavelengths λ1 λN- (generally "the assigned wavelength λ", collectively "the assigned wavelengths λ"). In various embodiments, the input encoder 702 may be similar to the input encoder 102 described with respect to Fig. 1-5, but includes a circuit configured to allow each search word SW to be encoded to a different assigned wavelength λ. In various embodiments, a broadband light source (in Fig.7) may be connected to the input encoder 702. The input encoder 702 may output a multi-wavelength encoded search signal 710 comprising each of the associated wavelengths λ.

[0057] The multi-wavelength coded search signal 710 may be optically coupled to a 1 × M splitter 203, similar to the 1 × M splitter 203 described with respect to Fig. 2. The 1 × M splitter 203 can generate M copies of the multi-wavelength encoded search signal 715a-715M, where M is the total number of words 525 stored in the TCAM with which the search words SW are to be compared. The multi-wavelength encoded search signals 715 can propagate in the same manner as the encoded search signals 115, which are stored with respect to Fig. 5 were discussed.

[0058] In various embodiments, a multi-word encoder 705 may be configured to generate a plurality of multi-wavelength TCAM word signals 730a-730M (generally, "the multi-wavelength TCAM word signal 730," collectively, "the multi-wavelength TCAM word signals 730"). Each multi-wavelength TCAM word signal 730 may include a corresponding TCAM-stored word 525 encoded at each of the associated wavelengths λ. A broadband light source 715 may be coupled to and used by the multi-word encoder 705 to encode each TCAM-stored word 525 at all associated wavelengths λ. In various embodiments, the broadband light source 715 may be the same broadband light source connected to the input encoder 702, and in some embodiments, the broadband light source 715 may be a dedicated light source.The interleaver 510 may be configured to forward each multi-wavelength encoded search signal 715 with a corresponding one of the multi-wavelength TCAM word signals 730 in a similar manner as described with respect to FIG. Fig. 5. In this way, an optical signal is generated that contains all search words SW (on a respective associated wavelength λ) and a respective TCAM search word 525 (encoded on all associated wavelengths λ).

[0059] The parallel optical signals may be optically coupled to a respective multiplier within the multiplier region 720. Each multiplier within the multiplier region 720 may be similar to the multipliers in the multiplier region 520, which may be Fig.5, except that each multiplier in multiplier region 720 comprises a multi-wavelength multiplier. In some embodiments, each multiplier within multiplier region 720 may comprise one or more optical elements configured to operate at each of the associated wavelengths λ.

[0060] To accommodate the plurality of associated wavelengths λ, each multiplier within the multiplier region 720 may be optically coupled to a corresponding demultiplexer 760a-760M (generally "the demultiplexer 760", collectively "the demultiplexer 760"). Each of the demultiplexers 760 may be configured to separate light of the respective associated wavelengths λ in a similar manner to the demultiplexer 301, which is Fig.3. Each demultiplexer 760 may include a plurality of outputs optically coupled to a photodetector array 780a-780M (generally "the photodetector array 780", collectively "the photodetector arrays 780"). Each photodetector within a photodetector array 780 may be associated with a corresponding TCAM memory word. In various embodiments, each photodetector array 780 may be a symmetric photodetector array (similar to the symmetric photodetector arrays 509 described with respect to Fig. 5) per wavelength output from the demultiplexers 760.

[0061] In various embodiments, the TDM coding scheme may be combined with both the spatial multiplexing and WDM approaches according to the example embodiments of the Fig. 6 and Fig.7. In this way, the energy efficiency benefits of all approaches can be achieved. As a non-limiting example, longer words, a larger number of words, or a combination thereof can be searched in a more energy-efficient manner, thereby increasing the overall throughput and efficiency of the TCAM.

[0062] The information relating to the Fig. The optical search engines discussed in sections 1-7 can be implemented within a TCAM component of a device, increasing the speed and efficiency of the search compared to conventional TCAMs. Fig.Figure 8 shows an example computing device 800 in accordance with embodiments of the technology disclosed herein. The example computing device 800 is for illustrative purposes and should not be construed to limit the scope of the technology to only the illustrated embodiment. The example computing device 800 may include more or fewer components in various embodiments. When common references are used between the figures, it should be understood that all descriptions associated with such a reference apply to all instances of the reference unless otherwise noted.

[0063] As in Fig.8, the computing device 800 may include a processor 803. In various embodiments, the processor 803 may be one or more of a general-purpose processor (GPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other computer processor device known in the art. In various embodiments, the processor 803 may include a coprocessor configured to control the operation of the TCAM search functionality of the computing device 800. In various embodiments, the processor 803 may be configured to send an electrical search word to an optical search engine 850. In various embodiments, the optical search engine 850 may be configured to perform the operations described above with respect to the Fig.1-7. One or more applications executed by processor 803 may request access to a portion of memory within the same network as computing device 800 by electronically transmitting a search word over electrical search input line 801. Optical search engine 850 may encode the search word on the optical search signals, as described with respect to Fig. 1-7. In various embodiments, the search word may be optically transmitted to the optical search engine 850 via the optical search input line 802 from an optical source 804.

[0064] In various embodiments, the optical source 804 may include an output from an optical transceiver (in Fig.8 not shown) of the computing device 800. The optical transceiver may be configured to receive an optical signal encoded with the search word from one or more other devices connected to the computing device 800. In some embodiments, the optical source 804 may comprise an optical fiber or other optical transmission medium within the computing device 800 and may be connected to one or more other components within the computing device and / or to the internal output of a front panel connector. The optically received search word via the optical search input 802 may be multiplexed into the plurality of optical search signals, as described with respect to the Fig. 1-7 was discussed.

[0065] In various embodiments, processor 803 may be communicatively coupled to programming controller 806. As discussed with respect to FIG. 17, programming controller 806 may be configured to program the multiple modulators within optical search engine 800 such that the state of each modulator is driven according to the encoding scheme discussed with respect to Tables 1-5. In various embodiments, processor 803 may send a word to be stored to programming controller 806, which may then determine how to encode the electrical drive signal. In some embodiments, processor 803 and programming controller 806 may be the same component. In some embodiments, programming controller 806 may be configured to receive, for each word, instructions for operating the modulators of optical search engine 800.

[0066] After performing the search, one or more output signals 807 may be output from the optical search engine 850. In various embodiments, the output signals 807 may include one or more memory addresses in a memory component within the network that can be accessed directly or indirectly (i.e., via another device within the network) by the computing device 800 and that correspond to one or more stored words presented by the plurality of modulators of the optical search engine 850 and for which a match to the search word was determined. The output signal 807 may be sent to either a converter 870, a laser 860, or a combination of both. When the memory address corresponding to the matching TCAM-stored word(s) is provided to an electronic component (e.g.,If the output signal 807 is to be sent to a memory controller (e.g., a memory controller directly connected to the computing device 800) to access the content at the requested memory address(es), the output signal 807 may be sent to the converter 870, which is configured to convert the output signal into an electrical signal containing the memory address(es). In various embodiments, the converter 870 may comprise an analog-to-digital converter (ADC). If the output signal 807 is to be sent optically to another entity (e.g., another computing device via an optical link), the output signal 807 may be sent to a laser 860, which is configured to convert the output signal into an optical signal that is transmitted to another entity, e.g., a memory controller or other device.

[0067] Fig.9 is an example method 900 in accordance with embodiments of the present disclosure. The example method 900 is for illustrative purposes only and should not be construed as limiting the scope of the technology disclosed herein. The example method 900 may be implemented in optical TCAMs similar to those described above with respect to the Fig.1-8 to perform a ternary search. In various embodiments, method 900 may include one or more non-transitory, machine-readable instructions executable by one or more processors of a computing device and stored on a non-transitory, machine-readable storage medium. In operation 902, one or more search words may be received from a search word source. The one or more search words may be received from a search input of an optical search system, similar to Fig.1-8. In various embodiments, the one or more search words may be received as an electronic signal by one or more processors and / or applications that can access the optical search system. In various embodiments, the one or more search words may be received as an encoded optical search signal from an optical source, similar to that described above with respect to the Fig. 1-8. In various embodiments, the search word source may comprise a processing circuit, an application, an optical transceiver, or another source related to Fig. 1-8. In various embodiments, the one or more search words may be received by an input encoder, similar to the input encoders described with respect to Fig. 1-8 were discussed.

[0068] In operation 904, each bit of each of the one or more search words is encoded in the time domain. In various embodiments, the encoding of each bit may be performed in a manner similar to the TDM encoding scheme discussed with respect to Tables 1-5 above. Each bit of the search word may be assigned to two time slots. In various embodiments, the time slots may be determined based on a clock signal from a clock source. As a non-limiting example, during a first clock cycle, the input encoder may set the value of the first time slot associated with a bit position, during the second clock cycle, the input encoder may set the value of the second time slot associated with the same bit position, and the modulator may be adjusted in accordance with the first time slot associated with the same bit position for the TCAM memory word, and so on.That is, the input encoder and the modulator can operate in parallel. In various embodiments, the same clock signal can be used to encode each corresponding bit of one or more TCAM-stored words, while in other embodiments, separate clock signals can be used to encode the search words and the TCAM-stored words. In various embodiments, a delayed clock signal can be used to encode the corresponding bit position of the TCAM-stored words.

[0069] In some embodiments, operation 904 may optionally include spatially multiplexing each of the one or more search words in a manner similar to that described above with respect to Fig.6. Spatially multiplexing each of the one or more search words may comprise fanning out the encoded optical signal for each search word in accordance with a free-space optical combiner / splitter. In various embodiments, each of the one or more search words may be encoded on a single wavelength. In various embodiments, operation 904 may optionally comprise assigning one of a plurality of wavelengths to each search word of the one or more search words such that the respective search word is encoded on light of the assigned wavelength. In various embodiments, each of the one or more search words may be spatially multiplexed as well as WDM multiplexed, in addition to encoding the search words in the time domain (i.e., TDM encoding).

[0070] The encoded one or more search words may be input to an optical search engine at operation 906. Input of the one or more encoded search words may include outputting an encoded search signal on an input routing element, similar to the input routing element configured with respect to the Fig. 1-8. In various embodiments, inputting an encoded search signal may include generating one or more copies of the encoded search signal using a splitter, such as the one described in Fig.1-8. In some embodiments, each of the one or more search words may be input on a separate encoded search signal, while in other embodiments, all search words may be input on a multi-wavelength encoded search signal. In some embodiments, each search word may be encoded on a plurality of wavelengths, while in other embodiments, each search word may be encoded on a dedicated wavelength.

[0071] In operation 908, each encoded bit of each of the search words is compared with a corresponding bit of one or more words stored in the TCAM. The comparison may be performed in a manner similar to that described in Fig.1-8. In various embodiments, a modulator of the optical search engine may be controlled by a programming controller to encode a TCAM-stored word of the plurality of TCAM-stored words in the time domain, similar to encoding each of the search words. In some embodiments, encoding the TCAM-stored words may include generating one or more TCAM word signals representing each of the TCAM-stored words. In operation 910, the comparison result for a respective bit position is determined. In some embodiments, each bit-based comparison result may be determined within the duration of the word comparison, while in other embodiments, each bit-based comparison result may be determined after all encoded bits have been compared to a plurality of TCAM-stored words (e.g., after all encoded bits of the search word have passed through a plurality of modulators).In some embodiments, a plurality of TCAM-stored words may be searched in parallel, with each TCAM-stored word having a corresponding input routing element configured to optically couple a copy of the encoded search signal from the input encoder.

[0072] At operation 912, a plurality of comparison results may be integrated to determine whether a search word matches a word stored in the TCAM. After all associated time slots used to encode a search word have passed through the optical search engine, a photodetector may be configured to integrate all light signals received on one or more optical routing elements and / or free-space optical paths. The integration may be performed in a manner similar to that described above with respect to Fig.1-8. At operation 914, a memory address associated with one or more customized TCAM memory words may be determined. This determination may be similar to the determination described with respect to Fig. 1-8 was discussed.

[0073] Fig. 10 shows a block diagram of an example computer system 1000 in which various embodiments described herein may be implemented. The computer system 1000 includes a bus 1002 or other communication mechanism for conveying information, and one or more hardware processors 1004 coupled to the bus 1002 for processing information. The hardware processor(s) 1004 may be, for example, one or more general-purpose microprocessors. The computer system 1000 may, in various embodiments, be similar to the Fig. 8 be similar to the 800 computer system discussed in section 8.

[0074] Computer system 1000 also includes main memory 1006, such as random access memory (RAM), a cache, and / or other dynamic storage devices connected to bus 1002, for storing information and instructions to be executed by processor 1004. Main memory 1006 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 1004. Such instructions, when stored in storage media accessible to processor 1004, make computer system 1000 a special-purpose machine adapted to perform the operations specified in the instructions.

[0075] Computer system 1000 also includes a read-only memory (ROM) 1008 or other static storage device connected to bus 1002 for storing static information and instructions for processor 1004. A storage device 1010, such as a magnetic disk, an optical disk, or a USB flash drive, etc., is provided and connected to bus 1002 for storing information and instructions.

[0076] Computer system 1000 may be coupled to a display 1012, such as a liquid crystal display (LCD) (or a touchscreen), via bus 1002 to display information to a computer user. An input device 1014, including alphanumeric and other keys, is coupled to bus 1002 to communicate information and command selections to processor 1004. Another type of user input device is cursor control 1016, such as a mouse, trackball, or cursor direction keys, for communicating direction information and command selections to processor 1004 and controlling cursor movement on display 1012. In some embodiments, the same direction information and command selections as with cursor control may be implemented via receiving touches on a touchscreen without a cursor.

[0077] Computer system 1000 may include a user interface module for implementing a graphical user interface, which may be stored on a mass storage device as executable software code executed by the computing device(s). This and other modules may include, by way of example, components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.

[0078] In general, the words "component," "engine," "system," "database," "data store," and the like, as used herein, may refer to logic embodied in hardware or firmware, or to a collection of software instructions that may have entry and exit points and be written in a programming language such as Java, C, or C++. A software component may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language such as BASIC, Perl, or Python. Software components may be callable by other components or by themselves, and / or may be called in response to detected events or interrupts. Software components configured to run on computing devices may be embodied on a computer-readable medium, such as a hard disk.a compact disc, digital video disc, flash drive, magnetic disk, or other tangible medium, or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression, or decryption prior to execution). Such software code may be stored partially or entirely on a storage device of the executing computing device for execution by the computing device. Software instructions may be embedded in firmware, such as an EPROM. It is understood that hardware components may consist of attached logic units, such as gates and flip-flops, and / or may be composed of programmable units, such as programmable gate arrays or processors.

[0079] Computer system 1000 may implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic that, in combination with the computer system, causes or programs computer system 1000 to be a special-purpose machine. According to one embodiment, the techniques described herein are performed by computer system 1000 in response to processor(s) 1004 executing one or more sequences of one or more instructions contained in main memory 1006. Such instructions may be read into main memory 1006 from another storage medium, such as storage device 1010. Execution of the instruction sequences contained in main memory 1006 causes processor(s) 1004 to perform the process steps described herein.In alternative embodiments, hard-wired circuits may be used instead of or in combination with software instructions.

[0080] The term "non-transitory media" and similar terms as used herein refer to any media that stores data and / or instructions that cause a machine to operate in a particular manner. Such non-transitory media may include non-volatile media and / or volatile media. Examples of non-volatile media include optical or magnetic disks, such as storage device 1000. Volatile media include dynamic memory, such as main memory 1006.Common forms of non-volatile media include a floppy disk, a flexible disk, a hard disk, a solid-state drive, a magnetic tape or other magnetic data storage medium, a CD-ROM, another optical data storage medium, any physical medium with hole patterns, a RAM, a PROM and EPROM, a FLASH EPROM, NVRAM, any other memory chip or cartridge, and networked versions thereof.

[0081] Non-transitory media are distinct from transmission media but can be used in conjunction with them. Transmission media are involved in the transfer of information between non-transitory media. Examples of transmission media include coaxial cable, copper wire, and fiber optic cables, including the wires that make up bus 1002. Transmission media can also take the form of acoustic or light waves, such as those generated in radio and infrared data communications.

[0082] Computer system 1000 also includes a communications interface 1018 coupled to bus 1002. Network interface 1018 provides a two-way data communications connection to one or more network connections connected to one or more local area networks. For example, communications interface 1018 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem to provide a data communications connection to a corresponding type of telephone line. As another example, network interface 1018 may be a Local Area Network (LAN) card to provide a data communications connection to a compatible LAN (or a WAN component for communicating with a WAN). Wireless connections may also be implemented.In any such implementation, the network interface 1018 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.

[0083] A network connection typically provides data communication over one or more networks to other data devices. For example, a network connection may provide a connection over a local area network to a host computer or data devices operated by an Internet Service Provider (ISP). The ISP, in turn, provides data communication services over the worldwide packet data communications network, now commonly referred to as the "Internet." Both the local area network and the Internet use electrical, electromagnetic, or optical signals that carry digital data streams. The signals through the various networks and the signals on the network connection and through the communication interface 1018 that carry the digital data to and from the computer system 1000 are example forms of transmission media.

[0084] Computer system 1000 can send messages and receive data, including program code, over the network(s), the network connection, and the communications interface 1018. In the Internet example, a server could transmit requested code for an application program over the Internet, the ISP, the local network, and the communications interface 1018.

[0085] The received code may be executed by processor 1004 when received and / or stored in storage device 1010 or other non-volatile memory for later execution.

[0086] Each of the processes, methods, and algorithms described in the preceding sections may be embodied in code components and fully or partially automated by one or more computer systems or computer processors comprising computer hardware. The one or more computer systems or computer processors may also operate to support the performance of the relevant operations in a cloud computing environment or as software as a service (SaaS). The processes and algorithms may be partially or fully implemented in application-specific circuitry. The various functions and processes described above may be used independently of one another or combined in various ways.Various combinations and subcombinations are intended to be within the scope of this disclosure, and certain method or process blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular order, and the associated blocks or states may be performed in other suitable orders, in parallel, or otherwise. Blocks or states may be added to or removed from the disclosed embodiments. The execution of certain operations or processes may be distributed among computer systems or computer processors located not only within a single machine, but across a number of machines.

[0087] A circuit may be implemented in any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms may be implemented to form a circuit. In implementation, the various circuits described herein may be implemented as discrete circuits, or the described functions and features may be distributed, in part or in whole, among one or more circuits. Although various features or elements of functionality are individually described or claimed as separate circuits, those features and functions may be shared by one or more common circuits, and such description is not intended to assume or imply that separate circuits are required to implement those features or functions.If a circuit is implemented in whole or in part with software, that software may be implemented to operate with a computing or processing system capable of performing the functionality described with respect thereto, such as computer system 1000.

[0088] As used herein, the term "or" can be interpreted in both an inclusive and an exclusive sense. Furthermore, descriptions of resources, acts, or structures in the singular should not be construed to exclude the plural. Conditional expressions such as "may," "could," "might," or "may," unless expressly stated otherwise or understood by context, are generally intended to convey that certain embodiments include certain features, elements, and / or steps, while other embodiments do not.

[0089] Terms and expressions used in this document, and variations thereof, should be understood as open-ended and not limiting unless expressly stated otherwise. Adjectives such as "conventional," "traditional," "normal," "standard," "known," and terms of similar import are not intended to limit the subject matter described to a particular period of time or to a subject matter available at a particular time, but should be understood to include conventional, traditional, normal, or standard technologies that may be available or known now or at any time in the future.The presence of broader words and expressions such as “one or more,” “at least,” “but not limited to,” or other similar expressions in some cases should not be construed as meaning that the narrower case is intended or required in cases where such broader expressions may be absent.

Claims

[1] An optical ternary content-addressable memory (TCAM) comprising: an input encoder (102, 602, 702) configured to encode a search word (103, SW) onto an optical search signal (110, 610, 710), each bit position of the search word (103, SW) being represented by at least two time slots of a clock signal; a splitter (203) optically coupled to an output of the input encoder (102, 602, 702) and configured to generate a plurality of copies of the optical search signal (110, 610, 710); a multi-word encoder (505, 705) configured to generate a plurality of TCAM word signals (530, 730), each TCAM word signal (530, 730) encoding a TCAM stored word (525) from a plurality of TCAM stored words (525), and each bit position of the TCAM stored word (525) being represented by at least two time slots of the clock signal; an optical interleaver (510, 650) configured to route a copy of the optical search signal (110, 610, 710) from the plurality of copies of the optical search signal (110, 610, 710) and a TCAM word signal (530, 730) from the plurality of TCAM word signals (530, 730) to propagate in parallel as a plurality of pairs of input signals; a plurality of multipliers (640cc), each multiplier (640cc) configured to receive a pair of input signals from the plurality of pairs of input signals and to compare the respective copy of the plurality of copies of the optical search signal (110, 610, 710) and the respective TCAM word signal (530, 730); and a plurality of symmetrical photodetector arrays (509, 660, 780), each symmetrical photodetector array (509, 660, 780) being optically coupled to an output of a respective multiplier (640cc) of the plurality of multipliers (640cc), wherein each symmetric photodetector array (509, 660, 780) is configured to detect a mismatch between the respective copy of the plurality of copies of the optical search signal (110, 610, 710) output from a first output of a respective multiplier (640cc) and the respective TCAM word signal (530, 730) output from a second output of the respective multiplier (640cc) by detecting light during at least one time slot of the clock signal. [2] The optical TCAM of claim 1, wherein each bit position of the search word is associated with a first time slot and a second time slot of the clock signal, and each bit position of the search word (103, SW) is encoded either as light with an amplitude or as no light. [3] Optical TCAM according to claim 2, wherein: a bit position of the coded search word (103, SW) represents a logical '1' if light having an amplitude is contained in the optical search signal (110, 610, 710) during the first time slot associated with the respective bit position and no light is contained in the optical search signal (110, 610, 710) during the second time slot associated with the respective bit position; a bit position of the optical search signal (110, 610, 710) represents a logic '0' if no light is contained in the optical search signal (110, 610, 710) in the first time slot associated with the respective bit position, and light with an amplitude is contained in the optical search signal (110, 610, 710) during the second time slot associated with the respective bit position; and a bit position of the optical search signal (110, 610, 710) represents a placeholder value if no light is contained in the optical search signal (110, 610, 710) during the first time slot and the second time slot associated with the respective bit position. [4] Optical TCAM according to claim 2, wherein: a bit position of the TCAM word signal (530, 730) represents a logic '0' if light having an amplitude is included in the TCAM word signal (530, 730) during the first time slot associated with the respective bit position and no light is included in the TCAM word signal (530, 730) during the second time slot associated with the respective bit position; a bit position of the TCAM word signal (530, 730) represents a logical '1' if no light is contained in the TCAM word signal (530, 730) during the first time slot associated with the respective bit position and light having an amplitude is contained in the TCAM word signal (530, 730) during the second time slot associated with the respective bit position; and a bit position of the TCAM word signal (530, 730) represents a placeholder value if no light is contained in the TCAM word signal (530, 730) during the first time slot and the second time slot associated with the respective bit position. [5] The optical TCAM of claim 1, wherein the input encoder (602) is configured to receive a plurality of search words (SW) and encode each of the plurality of search words (SW) into an optical search signal (610) of a plurality of optical search signals (610). [6] The optical TCAM of claim 5, further comprising a first imaging optics array (620) configured to optically fan out each of the plurality of optical search signals (610); and a second imaging optics array (630) configured to optically fan out each of the plurality of TCAM word signals (530). [7] The optical TCAM of claim 1, wherein: the input encoder (702) is further configured to: receive a plurality of search words (SW); encode each of the plurality of search words (SW) on one wavelength from a plurality of wavelengths; and Outputting a plurality of multi-wavelength encoded search signals (710), each multi-wavelength encoded search signal (710) comprising each of the plurality of search words (SW) encoded on a respective wavelength of the plurality of wavelengths; and the multi-word encoder (705) is further configured to: encode each TCAM-stored word (525) on each of the plurality of wavelengths; and Outputting a plurality of multi-wavelength TCAM word signals (730), each multi-wavelength TCAM word signal (730) comprising the respective TCAM word signal (730) encoded on all wavelengths of the plurality of wavelengths.

Citation Information

Patent Citations

  • Concurrently performing attribute-dependent operations on signals

    US20180081388A1

  • Parallel MSD arithmetic using an opto-electronic shared content-addressable memory processor

    US5333117A

  • US16905674B2