Detailed Description
The present invention provides an improved method of loading a given web page into a device, an improved method of operating a server apparatus for loading a given web page into a device, and an improved device for loading a given web page.
In order to make it easier for a person skilled in the art to understand the solution of the present invention, the following embodiments of the present invention are described in conjunction with the accompanying drawings.
The terms, such as "first," "second," "third," and "fourth" (if any) in the summary, claims, and in the foregoing figures, of the invention are used to distinguish between similar objects and not necessarily describe a particular sequence or order. It is to be understood that the terms so used are interchangeable under appropriate circumstances. Thus, for example, embodiments described herein can also be implemented in sequences other than those shown or described herein. Furthermore, the terms "comprise" and "have," and any variations thereof, are intended to encompass non-exclusive inclusion. For example, a process, method, system, article, or apparatus that comprises a list of steps or elements is not necessarily limited to the particular steps or elements recited, but may include other steps or elements not expressly listed or inherent to such process, method, article, or apparatus.
Fig. 1 is a block diagram illustrating a device 102 for loading a given web page into the device 102 when connected to one or more servers 106A-106N and an intermediate service server 108 through a data communication system 104, in accordance with an embodiment of the present invention. The block diagram includes a device 102, a data communication system 104, one or more servers 106A through 106N, and an intermediate service server 108. The device 102 is configured to send a request to the intermediary service server 108 using the browser to obtain a preview package for a given web page.
The device 102 is configured to receive a preview package of a given web page at the device 102 and process the preview package on the device to generate a first rendering of the given web page to be presented to the user 100 on the device 102 and to arrange for the browser to initiate a request to one or more servers 106A to 106N for web page data required to generate a second rendering of the given original web page.
The device 102 is configured to receive web page data and generate a second rendering of the web page data while presenting the first rendering of the web page to the user 100. The device 102 is arranged to switch the browser from presenting the first rendering to the user 100 to presenting the second rendering of the given original web page to the user 100.
An advantage of the device 102 is that the device 102 uses a single multipart response that reduces network latency associated with loading each individual resource; thus, the preview page is provided for the visible content of the page to reduce the amount of content for initial loading, as well as reduce the amount of content initially handled by the browser. This makes use of content pre-processing to make rendering more efficient. The device 102 may be selected from, but is not limited to, a mobile phone, a palm top (personal digital assistant, PDA), a tablet, a desktop or a notebook. The user 100 may submit a user request (a web page for a web application) by performing a corresponding operation on the device 102.
Optionally, the device 102 is configured to switch from presenting the first rendering to the user 100 to presenting the second rendering to the user 100 in a seamless manner such that the user 100 is unaware of the switch. Optionally, the device 102 may arrange the preview package to have a preview format for enabling the user 100 to perform at least one of the following on the first rendering by the browser: zooming in/out of the first rendering, selecting and copying/pasting texture content from the first rendering, saving one or more images from the first rendering. Optionally, the device 102 is configured to send the request in (a) as a single request to the intermediate service server.
The intermediary service server 108 provides preview packages of a given web page to the device 102 in response to requests received from a browser executing on the device 102.
The intermediary service server 108 may be used to obtain information from one or more servers 106A through 106N for generating preview packages.
FIG. 2 is an interactive diagram providing an illustration of the steps of a method of loading a given web page into a device 202 connected to a server 206 and an intermediate service server through a data communication system according to an embodiment of the present invention. At step 208, data indicative of the URL of the web page (of the web application) is received as input (in a browser window executing on device 202) from user 200 at device 202. At step 210, two requests are prepared based on the request received by the device 202. In step 212, the device 202 interacts with the web accelerator 204 to communicate a first request for web page previews. In step 214, the device 202 interacts with the network accelerator 204 to pass a second request for the original web page. In step 216, the network accelerator 204 interacts with the server 206 specified in the user request to request and receive the content of the original web page. At step 218, the web page content is parsed by the web page accelerator 204. At step 220, the resources referenced in the web page are requested from the server 206 and the resources required for the web page are rendered by the web page accelerator 204. In step 222, the web page in the headless browser configured for screen resolution and color scheme compatibility is being rendered on the device 202, and the network accelerator 204 receives a request for the (original) page from the device 202. The web accelerator 204 loads web pages in a headless browser in a manner similar to that in a (conventional) web browser, except that the browser would use the screen properties of the device 202 when rendering the web pages. The headless browser executes all scripts that trigger execution at startup. When all of the above has been completed, the collapsed page resources have been loaded and no more javascript needs to be executed (within a short configurable timeout), the network accelerator 204 begins generating the content of the preview content in MHTML format.
At step 224, the resources referenced in the web page and needed to render the web page are received from the server 206 at the network accelerator 204. At step 226, when the network accelerator 204 requires all resources to generate the over-folded content, the generated MHTML preview is created. At step 228, the mhtml preview is sent by the network accelerator 204 to the device 202. At step 230, the preview page is rendered and displayed on a display associated with the device 202. In parallel with the rendering of the preview browser, the device 202 also stores the preview of the partial content (CSS and images) in the browser cache for continued use in the rendering of the original page. The web browser executing on device 202 loads a preview web page, such as a conventional web page, except that all resources are web pages extracted from a single HTTP response that includes multiple portions of messages. The web browser adds the image obtained from MHTML and the CSS file to the file cache at least before the regular page is loaded. If the cache control header does not allow caching, the web browser will still cache the file until the normal page is loaded.
At step 232, the web accelerator 204 at the slave device 202 receives the original main HTML page and the requested resources referenced by the main page. While some resources may already exist in the browser cache included in the MHTML preview response, for other resources, the device 202 may wait until other resources are received. At step 234, the original page is rendered immediately once it has all the resources including those in the browser tab/window hidden at the device 202; alternatively, it is not necessary to have all the resources needed to render the original page, but only the key resources (CSS, javaScript) and the image, text above the fold. The web browser executing on device 202 loads the original page as a background task. The web browser may load the original page in parallel with the preview page or may load it in sequence. The web browser finds the image and CSS file added in the above process in the file cache, uses the file in the cache, and thus does not request relevant resources from the server 206 (even if cache control does not allow caching). Further, the network accelerator 204 prioritizes, based on the first request of the preview document received from the device 202, that the network accelerator 204 first generates and transmits a request for MHTML, and then transmits the content item of the original document requested in the second request. The web accelerator 204 and web browser can reduce the speed of downloading resources belonging to the original page when downloading previewed resources.
When the original web page (request) is rendered, the corresponding browser tab containing the original page is displayed on the browser window of the device 202, and the original web page replaces the preview tab on the display. The original web page of the request will be rendered off screen in parallel with the preview page in the background and the preview will be deleted. The loaded preview and the original web page look the same, so the switching of pages is performed seamlessly.
The network accelerator 204 may perform the following steps:
(i) The memory document of the browser is serialized into HTML, only the portion of the rendered page that is above (or near) the fold is serialized,
(ii) Recording the used CSS file;
(iii) Marking all folded top images;
(iv) Multipart messages (MHTML) are assembled, which include files such as serialized HTML documents, CSS files used, and tagged image files.
The multipart message may include the source URL of the CSS file and the image. The multipart message may include an HTTP cache control header sent by the server 206. The preview does not include any JavaScript.
FIG. 3 is a block diagram illustrating cold loading of a web page without previewing according to an embodiment of the present invention. The block diagram includes a device 302, a preview accelerator 308, and a data communications system 320. The device 302 includes a foreground renderer 304 and a background renderer 306. Preview accelerator 308 includes headless browser 310, preview cache 312, web server 314, web cache 316, and web client 318. The data communication system 320 includes one or more servers 322A through 322N.
Headless browser 310 is shown as a client browser providing content to device 302. However, it is to be appreciated that the headless browser 310 generates preview content that is consumed by the foreground renderer 304. In addition, the web server 314 is a web server more like a proxy server.
FIG. 4 is a block diagram illustrating an example environment for preprocessing content in a web page to generate a web page preview in accordance with an embodiment of the present invention. The block diagram includes a device 402 comprised of a foreground renderer 404 and a background renderer 406, a network accelerator 408 comprised of a headless browser 410, a cache 412, a server and proxy 414, and a data communication system 416 comprised of one or more servers 418A through 418N.
The network accelerator 408 bundles the individual resources associated with all web pages into a single multipart response. The preview variant of the generated HTML page is applicable only to the portion of the page that is visible on the user's screen. Content that is "under the fold" and that requires scrolling to enter the viewport will be deleted. The servers and agents 414 represent proxy servers capable of executing browsers remotely from the device 402.
The web accelerator 408 sends HTML content optimized for initial rendering to the device 402. The previews are sent to the foreground renderer 404 as a static HTML format using the headless browser 410 as a separate view. The headless browser 410 stores portions of the preview page (CSS and images) in the cache 412 in parallel with the rendering of the preview page, at least prior to the rendering of the original page. The network accelerator 408 filters content based on the particular user's device 402 (e.g., content of only the portion of the page that is visible on the display device associated with the device 402).
There is a link shown in fig. 4 between the headless browser 410 and the foreground renderer 404. However, it is to be appreciated that the headless browser does not provide content on http or any other protocol, making the preview server advantageously useful for providing preview content.
The network accelerator 408 places individual resources in the multi-part preview based on the importance of minimizing content processing time; the device 402 and its foreground renderer 404 are used to extract resources from the multipart response, parse the resources and render the preview page. The device 402 using the foreground renderer 404 first places the main HTML document in the preview and then places the Cascading Style Sheets (CSS) and the remaining resources in the order in which they appear on the results page. The order of appearance may be different from the order of reference of the resources in the web page. Device 402 then generates a rendering of the original web page and places the original web page using background renderer 406.
Web page loading acceleration is due to one or more of the following factors:
a) Network latency associated with each individual resource load is reduced by providing a single multipart response;
b) Reduced load content by providing previews for only the visible portion of the page;
c) The content that the browser needs to process is reduced because only previews are provided;
d) The execution time is reduced due to the reduced processing time of the pre-processed content, the inline style, and the script (e.g., javaScript) having no execution time, thereby achieving more efficient rendering.
Some functions of preview formats (e.g., multipart HTML) include:
a) Content is static, excluding JavaScript;
b) The preview format includes a single file delivered as a single resource file, thereby avoiding multiple round trip times for a single resource;
c) The preview format includes creation and rendering in a browser-supported format;
d) The auditing format stores a plurality of screen heights;
e) The preview format retains the content visible on the screen and the rest (under the screen content) will be deleted so the user does not need to scroll down through the preview page.
According to one aspect of the invention, by enabling page content caching and reuse, minimal additional network bandwidth is used.
FIGS. 5A-5B are flowcharts illustrating steps of a method for loading a given web page into a device connected to one or more servers and an intermediate service server through a data communication system, according to an embodiment of the present invention; a given web page to be presented to a user requires a browser to access one or more resources from one or more servers. In step 502, the browser is arranged to send a request for a preview package for a given web page to the intermediary service server. At step 504, a preview package of the given web page is received from an intermediary service server at the device and the preview package is processed at the device to generate a first rendering of the given web page on the device for presentation to the user, and the browser is arranged to request generation of web page data required for a second rendering of the given web page provided from the one or more servers. At step 506, web page data is received and concurrently presented to the user with a first rendering of the web page while generating a second rendering of the web page data. At step 508, the browser is used to switch from presenting the first rendering to the user to presenting the second rendering of the given original web page to the user.
The advantage of this approach is that it suggests receiving a multipart hypertext markup language (multipart hypertext markup language, MHTML) package in preview format in response to a request for a web page, thereby making the rendering of the web page more realistic, allowing the user to zoom in/out, select and copy/paste text content, save images, etc. Resources (images and styles) received with MHTML packets are available in the browser cache (e.g., by being stored as a single resource) and can be used immediately after receipt when the (originally) requested web page is loaded in the background.
The method supports merging resources from different web servers into MHTML preview files to improve the page loading experience in web browsers by first loading a static (non-script) document object model (document object model, DOM) preview and switching to the original web page (request) when the web page is ready. DOM previews support basic interactions (scaling, saving part of the resources) that a user can make with content while browsing.
In addition, the method supports the browser loading a static (i.e., non-scripting) but interactive web page preview provided by the web accelerator during the first step and displaying it to the user in a single bundle and within a single Round Trip Time (RTT), and loading the original page during the second step and rendering it off screen in parallel in the background. In addition, the method supports removing previews from the screen when the original page is displayed. The method can make the web pages loaded in two steps look identical, thereby seamlessly switching the web pages.
The advantage of this approach is that a single multipart response is used that reduces the network delay associated with the loading of each individual resource, providing preview pages for the visible part of the content of the page, reducing the amount of content to be loaded, and reducing the content to be processed by the browser, preprocessing the content for more efficient rendering.
Optionally, the method includes switching from presenting the first rendering to the user to presenting the second rendering to the user in a seamless manner, such that the switching is imperceptible to the user. Optionally, the method comprises arranging the first rendering as a simplified version of the second rendering. The first rendering enables at least a user to perform at least one of the following by using the browser: zooming in/out of the first rendering, selecting and copying/pasting texture content from the first rendering, saving one or more images from the first rendering. Optionally, the method includes providing the preview package in a bundle package format, the preview package including HTML code. The bundle format includes at least one of: MHTML, mozilla archive format, web archive format. The preview package may include compressed (e.g., "compressed into zip format") data.
Optionally, the method includes arranging the resources of the preview package in an order to most efficiently effect the first rendering on the device. Optionally, the method includes prioritizing the resources in the preview package so that the browser executes immediately upon receipt of the resources at the device. The preview package may have no executable code that enables user interaction. Optionally, the method comprises sending the request for the preview package in (a) as a single request to the intermediary service server.
Optionally, the method includes generating, at the device, a second rendering along with the partial data for generating the first rendering. Optionally, the method includes storing the data of the preview package in a data cache of a processor of the device. Optionally, the method includes modifying the browser to cache all resources in the preview package as a single resource so that the resource is available in the device for rendering other web pages on the device. Optionally, the method includes executing a browser on the device. Optionally, the method includes executing the browser remotely from the device as a proxy. The agent may be implemented by at least one of: proxy server, remote execution browser that proxies its User Interface (UI) to the device screen.
Fig. 6A to 6B are flowcharts illustrating a method of operating a server apparatus according to an embodiment of the present invention; however, it is to be understood that preview and original pages are requested at the same time, and they may be loaded in parallel, where such parallelism is actually shown in FIG. 2. The server means is for loading a given web page into a device connected to the server means via a data communication system. A given web page to be presented to a device user requires a browser executing on the device to access multiple resources from a server apparatus. At step 602, a preview package request for a given web page from a browser is received at a server device. At step 604, a preview package of the given web page is sent from the server apparatus to the device for processing by the device to generate a first rendering of the given web page on the device for presentation to the user and to receive a request from the browser to generate web page data required for a second rendering of the given web page. At step 606, the web page data is sent from the server apparatus to the device for processing by the device, and a second rendering of the web page data is generated while the first rendering of the web page is presented to the user. The browser is used to switch from presenting a first rendering to the user to presenting a second rendering of a given original web page to the user.
Optionally, the method further comprises configuring the server means to comprise one or more servers for providing web page data to the device, and configuring the server means to comprise an intermediate service server for providing preview packages to the device. Optionally, the method further comprises configuring an intermediate service server, and obtaining information for generating the preview package from one or more servers.
A software product comprising instructions executable on computing hardware to implement the above method. Optionally, the software product is at least partially implemented as a software product executable on computing hardware of the data communication device.
The method further includes any file caches of the external CSS style sheet, file caches in memory, in-memory rendering trees along with preview pages to render the original web page.
According to the method, the CSS style is optimized through the network accelerator WA, so that the preview rendering speed is further increased. The network accelerator may delete all unused CSS rules from the style sheet. The network accelerator may concatenate all or a subset of the styles defined in the style sheet, with the inline representation defining the styles in the element style properties. The subset of styles may depend on the frequency with which style rules are used in the document, either as many styles, or as heuristics for style rule processing complexity.
When serializing a document in memory into HTML, the web accelerator can serialize the computed style of each element (all styles with non-default values). And sending a signal of the calculated pattern to a device browser. The device browser may not process the style concatenation rules, thereby avoiding sending separate CSS files in MHTML.
The above method further accelerates preview rendering by layout pre-computation performed by the network accelerator. The web accelerator calculates the layout of each element in the preview document and concatenates the results into the transmitted preview document. A signal is sent to the device browser by a special indicator in MHTML that the layout has been pre-calculated.
This process requires the network accelerator to know the viewport width (in physical or device independent pixel size) of the device browser, as well as information about the particular font of the device browser. The network accelerator may obtain this information through a request received from a device or (information caching) database.
After the device browser recognizes from the indicator indicating the layout pre-calculation, a special mode is deployed so that the layout calculation for the preview is not performed, and the provided element coordinates are used.
In the above method, it may be necessary to add at least these attributes for each document element: top, left side, width, height; for text, fonts, including font size and text packaging, will be pre-computed and marked by inserting additional span elements or comparable marks.
The method further includes regenerating the DOM preview at the network accelerator. The web accelerator caches the preview document at the first request and services successive requests from the cache. The network accelerator may observe the cache control instructions sent by one or more servers. The Time To Live (TTL) of the preview may be the shortest time to live of the MHTML and all files contained in the original HTML file. When the content expires in the cache, and before it receives a request from the device (e.g., before reloading is used), the network accelerator reloads the content from one or more servers. The network accelerator performs early reloading only on content identified as often needed or requiring a long time to load from one or more servers. The network accelerator performs web crawling and generates previews for all found pages, with the starting page and optional web crawling process constraints (in terms of pages that may be processed) being configurable. The web accelerator generates previews and updates the previews throughout a list of configurable web pages or web sites.
Optionally, the method includes executing a remote browser DOM mirror preview to obtain a preview of the device browser through the web accelerator. In this method, the device browser receives a specially constructed web page as a response to a page preview request. The specially constructed web page includes a JavaScript library that can retrieve the elements of the preview page from the web accelerator as serialized DOM elements and reconstruct the web page in the device browser.
The network accelerator WA runs a preview mirror service to process preview requests received from users. The device browser sends a URL request to the web accelerator for previewing. The preview mirror service (preview mirroring service, PMS) of the network accelerator WA receives a user's request. The preview mirror service of the web accelerator WA uses custom JavaScript (JS) to construct a simple page with empty HTML and sends the simple page to the device browser as a response. The device browser receives and loads the simple page. And executing JavaScript, and establishing a WebSocket connection (or WebRTC) between the device browser page and the preview mirror service of the WA. In parallel with the above process, the preview mirror service of the WA starts a headless browser in the network accelerator and loads the URL sent by the user. When a simple page is loaded in the headless browser, the preview mirror service of the WA injects JS fragments (i.e., libraries) into the page. The injected JavaScript creates a WebSocket connection in the headless browser to the preview mirror service. The injected JavaScript also registers a DOM change observer in the simple page, which listens to DOM changes in the simple page. The preview mirror server socket of the WA connects to the user's browser page and the headless browser page of the WA. In the web accelerator, when the headless browser page variation observer receives DOM updates, the headless browser page variation observer sequences them and pushes them as JSON messages in the WebSocket connection. In WA, the preview mirror service receives a message with an identifier from the headless browser. The WA, preview mirror service processes the message and sends the message to the device browser. The user browser page WebSocket receives the message, the user browser page WebSocket deserializes the message, a DOM node is created, and the message is added into the DOM tree. The above process is repeated until the device browser presents an actual page. Furthermore, the headless browser of the WA may send a request dependency tree to the device to help load the background original page faster.
The advantage of this approach is that the preview speed is faster, because the device only mirrors the DOM object, and there is no JavaScript execution of the actual page. The user can interact with the page basically, and the page animation can be operated during the preview by using the page navigation.
Optionally, the method includes performing compositor frame generation and buffering of preview pages as described herein.
The method may save the compositor frame/tile generated by the rendering process in the network accelerator. The browser view class may receive the composite frame from the render compositor, then serialize and save the pixels and metadata. The network accelerator may send the saved pixel data and metadata to the device via a custom protocol. The device may use the composite frame (e.g., including texture and metadata) to generate the preview page. The preview page may be swapped with the original web page as long as the background live frame of the original document is ready.
The method allows defining a new protocol to transfer synthesizer frames (2D textures, even compressed) as well as metadata and RenderPassList (i.e. quaternary parameter list). Synthesizer frames may have in-depth knowledge of frame parameters (e.g., page_scale_factor, frame_readline, etc.), which may ensure a smoother transition between the preview page and the original frame, as they may seamlessly fit the UI subsystem so that the switch between the preview page and the original web page may not be perceived. The method allows switching between preview pages and original web page content without using new tabs or rendering processes, thereby reducing significant RAM overhead. This approach reduces the time required to load the original web page because the graphics back-end is available after accepting the compositor frame and setting the output surface GPU command buffer. Optionally, the method includes performing an optimization of JavaScript processing. The network accelerator may perceive the browser type running on the device and may potentially optimize the content of the original page. The network accelerator WA may be aware of the hardware platform used by the user's hardware platform, which opens the possibility for precompilation of JavaScript resources. When a preview page is generated in the headless browser on the web accelerator WA, javaScript is compiled and executed. The headless browser may be modified to save a compiled version of JavaScript in the cache memory of the web accelerator WA. Once the preview content is generated on the web accelerator WA and sent to the device browser, the web accelerator WA can send any remaining (i.e., under-folded) resources and JavaScript resources to the device browser to load the original page in parallel with the background task. In this process, the network accelerator WA sends compiled JavaScript JS (i.e., using machine code, such as using the V8 JavaScript engine), among other resources. The device browser directly uses the compiled JavaScript instead of parsing and compiling the JavaScript source, thereby improving the readiness of the page for user interaction. The device browser stores the compiled JS in its disk cache along with other resources. When a page load request for the same page comes from another device browser, the web accelerator WA will also cache the compiled JS, and the continuous preview generation may accelerate (because the headless browser does not have to compile JavaScript in the continuous request) and push to the new device browser faster.
JavaScript compilation on the web accelerator WA may be processed according to the target architecture of the device browser based on the user agent data. The user agent string includes an operating system and platform, a device model, etc. The network accelerator WA obtains a target hardware platform that can perform the desired operations by owning a list of relevant devices/models and target platforms.
Optionally, the method includes generating the preview document on a web server. The preview document is generated by the web server itself serving the original page content. The functionality of the web accelerator WA is added as a custom plug-in to the web server to generate preview pages. The device browser uses a custom HTML header at the page request to instruct the device browser to support web page previews in MHTML format. In this method, the device sends a request to the page and adds a custom header "x-preview-format: mhtml". The additional header may communicate screen resolution information to one or more servers. One or more servers detect that the device supports custom previews and respond with MHTML previews that return the same custom header. The generated previews may be cached on a web server. The device detects that one or more servers respond to the MHTML preview, receives and renders the MHTML preview on the screen, and performs the following processes in parallel.
The browsing client of the device may send a second request for the content of the original page, receive the content, and render it on the screen. The second request includes an additional header "x-preview-format: none" to ensure that one or more servers can respond with the content of the original page.
This approach is advantageous in terms of improved architecture by moving preview generation from an intermediate node in the network to a network server serving the original page and thus can remove delays in transferring content requests between one or more servers and the network accelerator WA. One or more servers may know when the content changed and may continually update the generated preview pages if the original content changed. Previews of most pages provided by one or more servers may be generated in advance because it is easy to manage the smaller number of pages hosted by the current server.
Optionally, the method includes pushing the DOM preview resource and the original page using HTTP 2. In this method, the network accelerator WA responds to a preview request received from a device browser executing on the device by pushing first resources required to render the DOM preview. These resources are not bundled in one huge multipart HTML file, but pushed as a single item. The device browser uses existing push resource cache support. After pushing the resources required for the DOM preview, the network accelerator WA continues to push additional critical resources required for rendering the original page. The device browser may load the original webpage in the background and switch to the original webpage when the original webpage rendering is complete.
The pushing and preloading web page resources are as follows: first, the accelerator pushes the file to the browser file cache using HTTP/2 push. Efficient pushing requires that the accelerator be aware of the files present in the browser cache, otherwise duplicate transmissions may occur. The accelerator has more complete, updated information about the resources required for the HTML page than the browser itself, as the accelerator can learn from multiple browsing clients.
Optionally, the method includes tab serialization that suggests that the web preview be sent as a binary large object (binary large object, BLOB), including the serialized data of the browser tab content. Tab serializers acquire on a cloud browser (or more precisely webcontacts)Tabs, and serialize their state into a binary blob. The binary blobs may be reverse-sequenced later into tabs in the device browser. The tab serializer serializes the Chrome/Blink/V8 state that holds the tab necessary and sufficient, includingAll DOM/CSS/ActiveDOMObject states and V8 Javascript, virtual Machine (VM), states.
FIG. 7 is an illustration of an exemplary computer system 700 that may implement the various architectures and functions of the foregoing embodiments. As shown, computer system 700 includes at least one processor 704 coupled to bus 702, wherein computer system 700 may be implemented using any suitable protocol, such as peripheral component interconnect (peripheral component interconnect, PCI), PCI-Express, accelerated graphics port (accelerated graphics port, AGP), hyperTransport, or any other bus or point-to-point communication protocol(s). Computer system 700 also includes memory 706.
Control logic (software) and data are stored in memory 706, and memory 706 may take the form of random-access memory (RAM). In the present invention, a single semiconductor platform may refer to the only single semiconductor-based integrated circuit or chip. It should be noted that the term single semiconductor platform may also refer to a multi-chip module with enhanced connectivity that simulates a module on a chip with enhanced connectivity that simulates on-chip operation and is a substantial improvement over using conventional central processing unit (central processing unit, CPU) and bus implementations. Of course, the various modules may also be placed individually or in various combinations of semiconductor platforms, depending on the desires of the user.
The computer system 700 may also include secondary storage 710. Secondary storage 710 includes, for example, hard disk drives and removable storage drives representing floppy disk drives, magnetic tape drives, compact disk drives, digital versatile disk (digital versatiledisk, DVD) drives, audio recording devices, universal serial bus (universal serial bus, USB) flash memory. The removable storage drive reads from and writes to at least one of a removable storage unit in a well known manner.
A computer program or computer control logic algorithm may be stored in at least one of the memory 706 and the secondary storage 710. Such computer programs, when executed, enable the computer system 700 to perform the various functions described above. Memory 706, secondary storage 710, and any other memory are possible examples of computer-readable media.
In one embodiment, the architecture and functionality described in the various previous figures may be implemented in the context of processor 704, a graphics processor coupled to communications interface 712, an integrated circuit (not shown) capable of having at least a portion of the capabilities of both processor 704 and the graphics processor, a chipset (i.e., a set of integrated circuits designed to operate and sell as a unit to perform the relevant functions), and the like.
Furthermore, the architecture and functionality described in the various previously described figures may be implemented in the context of a general computer system, a circuit board system, a gaming machine system dedicated for entertainment purposes, a specific application system. For example, computer system 700 may take the form of a desktop computer, a notebook computer, a server, a workstation, a gaming machine, an embedded system.
In addition, computer system 700 may take the form of various other devices including, but not limited to, a palmtop (personal digital assistant, PDA) device, a mobile telephone device, a smart phone, a television, etc. Further, although not shown, computer system 700 may be coupled to a network (e.g., telecommunications network, local area network (local area network, LAN), wireless network, wide area network (wide area network, WAN) such as the internet, point-to-point network, cable network, etc.) for communication purposes through I/O interface 708.
It should be understood that the configuration of the components shown in the described figures is exemplary, and that other configurations are possible. It should also be appreciated that the various system components (and devices) defined by the claims, described below, and shown in the various block diagrams represent components in some systems configured in accordance with the subject matter disclosed herein. For example, one or more of these system components (and devices) may be implemented in whole or in part by at least some of the components shown in the configurations shown in the described figures.
Furthermore, while at least one of these components is at least partially implemented as an electronic hardware component, and thus constitutes a machine, other components may be implemented in software, which when included in an execution environment constitutes a machine, hardware, or a combination of software and hardware.
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.