This disclosure generally describes methods for polishing a semiconductor substrate. More specifically, this disclosure describes a method of aligning a substrate and controlling the motion of the substrate relative to sensors in a polishing station.
A substrate may be polished as part of a semiconductor manufacturing process. Due to multiple moving parts, sensors detecting attributes of the substrate may take measurements at different places of the substrate. The resulting signals may have large errors or uncertainties, leading to imprecise readings.
A method of performing polishing processes on substrates may include receiving a substrate in a known alignment in a carrier head of a polishing station for a polishing process. The polishing process may cause the substrate in the carrier head to be polished by a polishing pad on a platen such that the substrate passes over one or more sensors in the platen along one or more predetermined sensor paths relative to the known alignment of the substrate. The method may also include causing the carrier head to move to a first position based on the one or more predetermined sensor paths; causing the platen to move to a second position based on the one or more predetermined sensor paths; and causing the substrate to rotate relative to the platen such that the one or more sensors pass along the one or more predetermined sensor paths.
In semiconductor manufacturing, a substrate may be provided with a plurality of dies disposed on the substrate. There may be one or more layers of films or other material deposited on the substrate as part of the manufacturing process. The one or more layers of films may be partially or fully removed via a polishing process in a Chemical Mechanical Polishing (CMP) machine. Due to the precise nature of semiconductor manufacturing, the amount of film and/or other material removed during the polishing process may be precisely controlled.
During the polishing process, the substrate may be received by the CMP machine in a carrier head. A platen may include a polishing pad and one or more sensors embedded in the platen. As the platen, the carrier head, and the substrate rotate, the polishing pad may apply a slurry to the substrate to remove material. The sensors may detect a thickness of the substrate as material is being removed. However, because the substrate, the carrier head, and the platen are rotating, the sensors may not take the same path over the substrate with each pass. This may result in imprecise and inconsistent readings from the sensors. The embodiments described herein solve this and other technical problems by indexing the substrate, the carrier head, and/or the platen with known alignments to allow predetermined sensor paths to be followed, thereby increasing precision of the polishing process.
The plurality of dies 104a-n may include chips such as integrated circuits, systems on a chip, photovoltaic cells, and other such circuits. The dies may be of any size or arrangement. For example, the dies 104 may be laid out in a grid on the substrate 102, as shown in
Each of the dies 104 may be associated with a set of attributes for their use. For example, the one or more films may need to be fully or partially removed during the manufacturing process. Because a CMP machine may apply the polishing process to a variety of substrates with a variety of dies, the amount of material removed may vary based on the specific substrate and die arrangement. Similarly, the materials in the substrate and/or the films applied to the substrate may vary. The rate at which these materials are removed during the polishing process may therefore also vary. Thus, it may be desirable to determine an accurate measure of the amount of material removed via a polishing process.
The CMP machine may also include the carrier head 204. The carrier head 204 may be configured to accept the substrate 202 and move the substrate 202 within the CMP machine. The carrier head 204 may also rotate and/or cause the substrate 202 to rotate. The carrier head 204 may have a home position within the CMP machine. The home position may provide a known reference point relative to the platen 106 and/or the CMP machine itself.
The CMP machine may also include the platen 206. In some embodiments, the platen 206 may be larger than the substrate 202. The platen 206 may be configured to support a polishing pad 207. The polishing pad 207 may in turn support a slurry, used during the polishing process. The slurry may include abrasive particles in a chemically reactive solution. When the platen 206 rotates, the slurry may polish the substrate 202, removing material through mechanical means (abrasive particles) and/or chemically via the chemically reactive solution. In some embodiments, the polishing pad 207 may be offset from the platen 206. For example, a first axis of the polishing pad may be parallel to a corresponding axis of the platen 206, and translated some distance along a second axis, perpendicular to the first axis.
The platen 206 may also include one or more sensors 208a-c. The one or more sensors 208a-c may be disposed at regular intervals in relation to the platen 206. For example, in the case that there are three sensors 108a-c, each of the sensors 108a-c may be placed at 120° at a consistent radial distance from the center of the platen 206. In the case of four sensors, each sensor may be placed every 90°. Other configurations may also be used at different radial distances and/or placed at different degree intervals around the platen 206.
The one or more sensors 108a-c may include electrical sensors, light sensors, or other suitable detection devices. The one or more sensors 108a-c may be used to detect one or more attributes of the substrate 202 and/or the dies disposed on the substrate 202, such as a thickness of the substrate 202 or a film on the substrate 202. By determining a thickness of the film on the substrate 202, the one or more sensors 108a-c may be used to determine a quantity of material removed during the polishing process. As the substrate 202 and the platen 206 rotate in relation to one another, the one or more sensors 108a-c may trace one or more sensor paths across the substrate 202 (and the dies disposed thereon). The measurements made by the one or more sensors 108a-c may vary based on where along the sensor path on the substrate 202 an individual measurement is taken. Therefore, the measurements may have a high degree of variability, even when made by the same sensor.
The platen 306 may be similar to the platen 206 in
During the polishing process, the platen 306 may rotate at a first rotational speed. The carrier head and/or the substrate 202 may rotate at a second rotational speed. Due the first rotational speed and the second rotational speed, and due to the random orientation of the substrate 302 relative to the platen 306, the one or more sensors 308a-c may trace the one or more sensor paths 310a-c across the substrate 302 through paths that are not coordinated or predetermined. For example, if the substrate 302 and the platen 306 are not aligned, the one or more sensor paths 310a-c may travel across different portions of the substrate 302 with every pass. Because the one or more sensors 308a-c may travel across different sensors paths, the measurements made by the one or more sensors 308a-c may be taken at inconsistent locations.
For example, the sensor path 310a may represent measurements taken by the sensor 308a at a first time. The sensor 308a may cross a first set of dies on the substrate 302 along the sensor path 310a. A signal quality associated with a measurement made by the sensor 308 may vary depending on where the measurement is made. If the measurement is made at a border between dies, the signal quality may be at a minimum. If the measurement is made at the center of a die in the first set of dies, the signal quality may be at a maximum. Generally, the closer to the center of the die a measurement is made, the higher the signal quality may be.
The sensor path 310b may represent measurements taken by the sensor 308a at a second time. The sensor 308a may cross a second set of dies on the substrate 302. The second set of dies may include some or all of the dies included in the first set of dies, or may be a completely different set of dies. In any case, it may be likely that the sensor path 310b varies significantly from that of the sensor path 310a. Thus, the measurements that are made along the sensor path 310b may vary from the measurements made along the sensor path 310a. Similar variation may be found in measurements made along the sensor path 310c.
The graph 400 may be generated during the polishing process where the substrate, the platen, and the carrier head are at a random alignment, similar to that described in
Looking at the graph 400, general trends may be identified in the graph 400. For example, there may be peaks of signal quality (here, representing a thickness of the substrate) at approximately +50 mm, −50 mm, +75 mm, etc. Troughs in signal quality may be found at 0 mm, +25 mm, +140 mm, etc. The peaks may represent signals recorded by sensors that traverse sensor paths passing through consistent or center portions of each die, rather than through boundaries between dies on the substrate. Conversely, the troughs may represent areas where the sensor path traverses boundaries between dies.
Despite the general trends being identified, the graph 400 may represent a high degree of variability. For example, at approximately −120 mm, a maximum thickness measured may be approximately 330 mm. At the same position, there may a minimum thickness of 220 micrometers. This variation may represent about a 33% degree of uncertainty. This level of uncertainty may be unacceptable for certain precision applications.
In order to get more accurate measurements, the substrate, the carrier head, and the platen may be aligned prior to the start of the polishing process. The substrate may include a reference point at some location on the substrate. The substrate may be aligned prior to placement in the CMP machine. For example, the substrate may be put into a known alignment in a Front Opening Unified Pod (FOUP). Then, the substrate may be placed into the carrier head of the CMP machine, maintaining the known alignment.
The carrier head may move to an associated home position within the CMP machine. Similarly, the platen may move to an associated home position. Because the carrier head and platen are in the associated home positions, and the substrate is in a known alignment, the substrate, the carrier head, and the platen may be aligned relative to each other. As the substrate, the carrier head, and the platen are aligned relative to each other, one or more predetermined sensor paths may be calculated such that the one or more sensor paths are consistent and pass through locations on the substrate that are aligned with die centers rather than die boundaries.
Various parameters may be used to determine the one or more predetermined sensor paths. For example, an ideal path may be determined for a particular arrangement of dies on the substrate. The ideal sensor path may maximize a signal quality of measurements made by a sensor by crossing a maximum number of dies at or near the center of the dies. Additionally or alternatively, the ideal sensor path may maximize the number of borders between dies crossed perpendicularly.
In some embodiments, one or more sensor paths may be determined for as associated sensor. For example, a first predetermined sensor path may be associated with a first sensor and a second predetermined sensor path may be associated with a second sensor. The first and second predetermined sensor paths may be independent of one another. In another embodiment, the one or more predetermined sensor paths may be determined such that the one or more sensors pass along the same predetermined sensor path. The one or more sensors may alternate such that each passes along the predetermined sensor path at a different time at regular intervals. In yet another embodiment, there may be multiple predetermined sensors paths. The one or more sensors may pass along each of the multiple predetermined sensor paths iteratively.
The first rotational speed of the platen and the second rotational speed of the substrate may be used to align the one or more predetermined sensor paths. In some embodiments, the first rotational speed and the second rotational speed may be the same (e.g., 90 rpm). In other embodiments, the first rotational speed and the second rotational speed may be different (e.g., 45 rpm and 120 rpm, respectively). Furthermore, the first rotational speed and second rotational speed may be in the same direction (e.g., clockwise) or in alternate directions.
This technique may create repeatable, predetermined sensor paths for each pass of the one or more sensors so the signal is collected at predetermined locations throughout entire polishing process. The signals from each scan may be compared directly, and the uncertainty between measurements reduced. The thickness of the substrate may be monitored at each rotation of the substrate and/or platen. More specifically, this technique is capable of creating repeatable sensor traces for each scan so that the signal is collected at predetermined locations throughout the entire polishing process. The signals from each scan may be compared directly, and the thickness can be monitored with each rotation. The elimination of the deviation between each scan improves the robustness of the endpoint significantly.
Indexing the polishing process may include one or more the following operations. First, the substrate may be aligned to a known position. For example, a substrate may often have a notch or other visual fiducial that indicates a known position on the substrate. The location of the fiducial may be identified before loading the substrate into the carrier head. This allows the substrate to be loaded into the carrier head with the known position relative to the carrier head. As described in detail below, this allows the sensor paths across the substrate to be aligned with dies on the substrate. For example, the substrate may be rotated such that the sensor paths are traced through center portions of the individual dies as opposed to along boundaries between the dies.
A controller for the CMP machine may include computer-readable, non-transitory storage media that store instructions. These instructions may be part of a recipe or other command sequence used to control the operations of the CMP machine. When one or more processors of the controller execute these instructions, the controller may move the carrier head to a home position and/or rotation. Similarly, the controller may cause the platen to go to a home rotation. In some embodiments, a polishing process may also include rotating the rotation of the platen to a first rotation away from the home rotation. Similarly, the process may also include moving the rotation and/or position of the carrier head to a first rotation and/or position away from the home rotation and/or position. This allows the CMP machine to rotate and position the substrate relative to the sensors in a known position and/or rotation. In either case, this may ensure that the platen and the carrier head are in a known location prior to each polishing process.
Next, the recipe may cause the carrier head and/or the platen to rotate at a predetermined rotational rate (e.g., revolutions per minute) that is selected based on the predetermined sensor paths. For example, some embodiments may use a fixed rotational rate for the platen (e.g., 90 rpm), as this rate typically dictates the removal rate of the film on the substrate. In some embodiments, the rotational rate of the carrier head may be set to be approximately the same as the rotational rate of the platen (e.g., 90 rpm). Alternatively, the rotational rate of the carrier head may be slightly larger or smaller than the rotational rate of the platen (e.g., a platen rotational rate of 93 RPM, and a carrier head rotation rate of 87 RPM). However, custom rotational rates may be determined that generate the predetermined sensor paths. Specifically, instead of simply selecting rotational rates for these components and generating random sensor paths, the predetermined sensor paths may serve as a starting point for this process, and the rotational rates of the platen and carrier head relative to each other may be selected in order to generate the predetermined sensor paths.
A number of different sensor paths are provided below by way of example. The sensor paths may be generated using specific rotational rates for the carrier head and/or platen as described below. For example, one of the sensor paths below may be selected and the known rotational rates associated with that sensor path may be used by the recipe. Alternatively, new sensor paths not explicitly shown below may be developed, and geometric calculations may be used to generate other sensor paths. For example, since the starting position of the substrate, the carrier head, and the platen are known, along with the predetermined sensor paths, the rotational rates of these components may be calculated by solving the known geometric rotational equations that calculate their relative motion. The following figures illustrate example sensor paths across a substrate, as determined by the techniques described herein. The examples are not exhaustive, and many different paths may also be used that may not be shown here explicitly. Other sensor paths may be chosen in order to maximize the signal quality based on the die layout on the substrate. The starting orientation of the substrate and the rotational rates of the platen and the carrier head may then be adjusted in order to match the predetermined sensor paths.
The carrier head may support the substrate 502 on a platen similar to the platen 206 in
The predetermined sensor path 510a may cross a first set of dies on the substrate 502. The predetermined sensor path 510a may cross at or near the center of a first number of dies. The predetermined sensor path 510b may cross a second set of dies on the substrate 502. The predetermined sensor path 510b may cross at or near the center of a second number of dies. The predetermined sensor path 510c may cross a third set of dies on the substrate 502. The predetermined sensor path 510c may cross at or near the center of a third number of dies. These sensor paths may be selected in order to maximize the number of dies for which the path crosses near a die center.
In some embodiments, the number of centers crossed by each of the predetermined sensor paths 510a-c may provide an acceptable signal quality. Then, each of the predetermined sensor paths 510a-c may be used by the one or more sensors. Each of the one or more sensors may pass along a specific predetermined sensor path 510a-c, or the one or more sensors may pass along all of the predetermined sensor paths at different times.
In other embodiments, only one of the predetermined sensor paths 510a-c may provide an acceptable signal quality. For example, the predetermined sensor path 510a may coincide with too many borders between dies and/or be too far from the center of too many dies. The predetermined sensor path 510c may also have similar defects. The predetermined sensor path 510b may cross a threshold number dies at or near the center. Further, the predetermined sensor path 510b may also cross the borders between dies substantially perpendicularly. Thus, the predetermined sensor path 510b may be selected as the desired sensor path. One or more of the sensors may then pass along the predetermined sensor path 510b during the polishing process.
The carrier head may support the substrate 602 on a platen similar to the platen 206 in
In some embodiments, the predetermined sensor paths 610a-c may be a set of straight lines that cross the substrate 602 at given intervals (e.g., 60°). The predetermined sensor paths 610a-c may each cross a certain number of dies at or near the center of each dies such that a signal quality of measurements taken along the predetermined sensor paths 610a-c are maximized. The predetermined sensor paths 610a-c may also cross a certain number of borders between dies substantially perpendicularly. The predetermined sensors paths 610a-c may be implemented by rotating the substrate 602 at a first rotational speed and the platen at a second rotational speed (e.g., 45 rpm and 90 rpm, respectively).
In some embodiments, one or more sensors may pass along a corresponding path of the predetermined sensor paths 610a-c. In other embodiments, each of the one or more sensors may pass along each of the predetermined sensor paths 610a-c at different times. The predetermined sensor paths 610a-c may provide a larger sample size of measurements by measuring the attributes of more dies on the substrate 602 than a single predetermined sensor path.
The carrier head may support the substrate 702 on a platen similar to the platen 206 in
In some embodiments, a large rpm difference between the platen and the substrate 702 may not affect the manufacturing or polishing process. In that case, the predetermined sensor path 710 may be an ideal sensor path. The predetermined sensor path 710 may maximize the signal quality of measurements made by one or more sensors as the one or more sensors pass along the predetermined sensor path 710. As shown in
In some embodiments, one or more sensors may pass along an associated path of the predetermined sensor path 710. In other embodiments, each of the one or more sensors may pass along each of the predetermined sensor path 710 at different times, one sensor following another sensor after a delay. The predetermined sensor path 710 may therefore provide a larger sample size of measurements by measuring the attributes of more dies on the substrate 702 by repeating the predetermined sensor path 710 at different locations.
The carrier head may support the substrate 802 on a platen similar to the platen 206 in
In some embodiments, a large rpm difference between the platen and the substrate 802 may not affect the manufacturing or polishing process. In that case, the predetermined sensor path 810 may be an ideal sensor path. The predetermined sensor path 810 may maximize the signal quality of measurements made by one or more sensors as the one or more sensors pass along the predetermined sensor path 810. As shown in
In some embodiments, one or more sensors may pass along an associated path of the predetermined sensor path 810. In other embodiments, each of the one or more sensors may pass along each of the predetermined sensor path 810 at different times, one sensor following another sensor after a delay. The predetermined sensor path 810 may therefore provide a may provide a larger sample size of measurements by measuring the attributes of more dies on the substrate 802 by repeating the predetermined sensor path 810 at different locations.
The measurements made by the sensor may be made according to the techniques described herein, where the substrate, carrier head, and platen are aligned (or indexed). The graph 900 may therefore be created by repeatable, predetermined sensor paths for each pass of the sensor. The signal may be collected at predetermined locations throughout a polishing process. The signals from each scan may be compared directly, and the uncertainty between measurements reduced.
Turning back briefly to
The platen 1006 may include an axis 1020. The polishing pad 1012 may include a corresponding axis 1022, parallel to the axis 1020. When the polishing pad 1012 is placed on the platen 1006, the polishing pad 1012 may be offset in relation to the platen 1006 such that corresponding axis 1022 is parallel to the axis 1020, but off-set by some amount.
Because the polishing pad 1012 is offset from the platen 1006, the slurry in the grooves 1014a-b may sweep, or wobble, along a radial direction of the platen 1006 as the platen 1006 rotates. The slurry may therefore contact the substrate 1016 (such as the substrate 202 in
The polishing process may cause the substrate in the carrier head to be polished by a polishing pad on a platen. A groove of the polishing pad may be offset from a corresponding axis of the platen, as is described in
The one or more sensors may be similar to the one or more sensors 208a-c. The one or more sensors may include electrical sensors, light sensors, or other suitable detection devices and be placed at regular intervals in relation to the platen. The one or more predetermined sensor paths may be determined to maximize a signal quality associated with one or more of the one or more sensors. The signal quality may be maximized by the one or more sensor paths crossing a maximum number of centers of dies and/or crossing a maximum number of boundaries between dies substantially perpendicularly.
At step 1104, the method 1100 may include causing the carrier head to move to a first position based on the one or more predetermined sensor paths. The first position may be similar to the associated home position of the carrier head within the CMP machine. At step 1106, the method may include causing the platen to move to a second position based on the one or more predetermined sensor paths. The second position may be similar to the associated home position of the platen, as described in
At step 1106, the method 1100 may include causing the substrate to rotate relative to the platen such that the one or more sensors pass along the one or more predetermined sensor paths. In some embodiments, a first rotational speed may be determined, associated with the platen and based on the one or more sensor paths. A second rotational speed may be determined, associated with the substrate, and based on the one or more sensor paths. The first rotational speed and the second rotational speed may be the same or may be different (e.g., both 90 rpm, or 135 rpm and 90 rpm respectively). For example, the first rotational speed and the second rotational speed may be used to implement any of the predetermined sensor paths illustrated in
Bus subsystem 1202 provides a mechanism for letting the various components and subsystems of computer system 1200 communicate with each other as intended. Although bus subsystem 1202 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1202 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, which can be implemented as a Mezzanine bus manufactured to the IEEE P1386.1 standard.
Processing unit 1204, which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of computer system 1200. One or more processors may be included in processing unit 1204. These processors may include single core or multicore processors. In certain embodiments, processing unit 1204 may be implemented as one or more independent processing units 1232 and/or 1234 with single or multicore processors included in each processing unit. In other embodiments, processing unit 1204 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.
In various embodiments, processing unit 1204 can execute a variety of programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can be resident in processor(s) 1204 and/or in storage subsystem 1218. Through suitable programming, processor(s) 1204 can provide various functionalities described above. Computer system 1200 may additionally include a processing acceleration unit 1206, which can include a digital signal processor (DSP), a special-purpose processor, and/or the like.
I/O subsystem 1208 may include user interface input devices and user interface output devices. User interface input devices may include a keyboard, pointing devices such as a mouse or trackball, a touchpad or touch screen incorporated into a display, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, audio input devices with voice command recognition systems, microphones, and other types of input devices.
User interface input devices may also include, without limitation, three dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphic tablets, and audio/visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode reader, 3D scanners, 3D printers, laser rangefinders, and eye gaze tracking devices. Additionally, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, position emission tomography, medical ultrasonography devices. User interface input devices may also include, for example, audio input devices such as MIDI keyboards, digital musical instruments and the like.
User interface output devices may include a display subsystem, indicator lights, or non-visual displays such as audio output devices, etc. The display subsystem may be a cathode ray tube (CRT), a flat-panel device, such as that using a liquid crystal display (LCD) or plasma display, a projection device, a touch screen, and the like. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from computer system 1200 to a user or other computer. For example, user interface output devices may include, without limitation, a variety of display devices that visually convey text, graphics and audio/video information such as monitors, printers, speakers, headphones, automotive navigation systems, plotters, voice output devices, and modems.
Computer system 1200 may comprise a storage subsystem 1218 that comprises software elements, shown as being currently located within a system memory 1210. System memory 1210 may store program instructions that are loadable and executable on processing unit 1204, as well as data generated during the execution of these programs.
Depending on the configuration and type of computer system 1200, system memory 1210 may be volatile (such as random access memory (RAM)) and/or non-volatile (such as read-only memory (ROM), flash memory, etc.) The RAM typically contains data and/or program modules that are immediately accessible to and/or presently being operated and executed by processing unit 1204. In some implementations, system memory 1210 may include multiple different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some implementations, a basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computer system 1200, such as during start-up, may typically be stored in the ROM. By way of example, and not limitation, system memory 1210 also illustrates application programs 1212, which may include client applications, Web browsers, mid-tier applications, relational database management systems (RDBMS), etc., program data 1214, and an operating system 1216. By way of example, operating system 1216 may include various versions of Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems, a variety of commercially-available UNIX® or UNIX-like operating systems (including without limitation the variety of GNU/Linux operating systems, the Google Chrome® OS, and the like) and/or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® 12 OS, and Palm® OS operating systems.
Storage subsystem 1218 may also provide a tangible (non-transitory) computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. Software (programs, code modules, instructions) that when executed by a processor provide the functionality described above may be stored in storage subsystem 1218. These software modules or instructions may be executed by processing unit 1204. Storage subsystem 1218 may also provide a repository for storing data used in accordance with some embodiments.
Storage subsystem 1218 may also include a computer-readable storage media reader 1220 that can further be connected to computer-readable storage media 1222. Together and, optionally, in combination with system memory 1210, computer-readable storage media 1222 may comprehensively represent remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information.
Computer-readable storage media 1222 containing code, or portions of code, can also include any appropriate media, including storage media and communication media, such as but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information. This can include tangible computer-readable storage media such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer readable media. This can also include nontangible computer-readable media, such as data signals, data transmissions, or any other medium which can be used to transmit the desired information and which can be accessed by computing system 1200.
By way of example, computer-readable storage media 1222 may include a hard disk drive that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive that reads from or writes to a removable, nonvolatile magnetic disk, and an optical disk drive that reads from or writes to a removable, nonvolatile optical disk such as a CD ROM, DVD, and Blu-Ray® disk, or other optical media. Computer-readable storage media 1222 may include, but is not limited to, Zip® drives, flash memory cards, universal serial bus (USB) flash drives, secure digital (SD) cards, DVD disks, digital video tape, and the like. Computer-readable storage media 1222 may also include, solid-state drives (SSD) based on non-volatile memory such as flash-memory based SSDs, enterprise flash drives, solid state ROM, and the like, SSDs based on volatile memory such as solid state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory based SSDs. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for computer system 1200.
Communications subsystem 1224 provides an interface to other computer systems and networks. Communications subsystem 1224 serves as an interface for receiving data from and transmitting data to other systems from computer system 1200. For example, communications subsystem 1224 may enable computer system 1200 to connect to one or more devices via the Internet. In some embodiments communications subsystem 1224 can include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular telephone technology, advanced data network technology, such as 3G, 4G or EDGE (enhanced data rates for global evolution), WiFi (IEEE 802.12 family standards, or other mobile communication technologies, or any combination thereof), global positioning system (GPS) receiver components, and/or other components. In some embodiments communications subsystem 1224 can provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface.
In some embodiments, communications subsystem 1224 may also receive input communication in the form of structured and/or unstructured data feeds 1226, event streams 1228, event updates 1230, and the like on behalf of one or more users who may use computer system 1200.
By way of example, communications subsystem 1224 may be configured to receive data feeds 1226 in real-time from users of social networks and/or other communication services such as Twitter® feeds, Facebook® updates, web feeds such as Rich Site Summary (RSS) feeds, and/or real-time updates from one or more third party information sources.
Additionally, communications subsystem 1224 may also be configured to receive data in the form of continuous data streams, which may include event streams 1228 of real-time events and/or event updates 1230, that may be continuous or unbounded in nature with no explicit end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measuring tools (e.g. network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like.
Communications subsystem 1224 may also be configured to output the structured and/or unstructured data feeds 1226, event streams 1228, event updates 1230, and the like to one or more databases that may be in communication with one or more streaming data source computers coupled to computer system 1200.
Computer system 1200 can be one of various types, including a handheld portable device (e.g., an iPhone® cellular phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head mounted display), a PC, a workstation, a mainframe, a kiosk, a server rack, or any other data processing system.
Due to the ever-changing nature of computers and networks, the description of computer system 1200 depicted in the figure is intended only as a specific example. Many other configurations having more or fewer components than the system depicted in the figure are possible. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, firmware, software (including applets), or a combination. Further, connection to other computing devices, such as network input/output devices, may be employed. Based on the disclosure and teachings provided herein, other ways and/or methods to implement the various embodiments should be apparent.
As used herein, the terms “about” or “approximately” or “substantially” may be interpreted as being within a range that would be expected by one having ordinary skill in the art in light of the specification.
In the foregoing description, for the purposes of explanation, numerous specific details were set forth in order to provide a thorough understanding of various embodiments. It will be apparent, however, that some embodiments may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.
The foregoing description provides exemplary embodiments only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the foregoing description of various embodiments will provide an enabling disclosure for implementing at least one embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of some embodiments as set forth in the appended claims.
Specific details are given in the foregoing description to provide a thorough understanding of the embodiments. However, it will be understood that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may have been shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may have been shown without unnecessary detail in order to avoid obscuring the embodiments.
Also, it is noted that individual embodiments may have been described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may have described the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in a figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination can correspond to a return of the function to the calling function or the main function.
The term “computer-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing, or carrying instruction(s) and/or data. A code segment or machine-executable instructions may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium. A processor(s) may perform the necessary tasks.
In the foregoing specification, features are described with reference to specific embodiments thereof, but it should be recognized that not all embodiments are limited thereto. Various features and aspects of some embodiments may be used individually or jointly. Further, embodiments can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive.
Additionally, for the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate embodiments, the methods may be performed in a different order than that described. It should also be appreciated that the methods described above may be performed by hardware components or may be embodied in sequences of machine-executable instructions, which may be used to cause a machine, such as a general-purpose or special-purpose processor or logic circuits programmed with the instructions to perform the methods. These machine-executable instructions may be stored on one or more machine readable mediums, such as CD-ROMs or other type of optical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of machine-readable mediums suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.
This application claims the benefit of U.S. Provisional Application No. 63/485,254 filed Feb. 15, 2023, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63485254 | Feb 2023 | US |