US20140267439A1 - Image Delivery Architecture - Google Patents
Image Delivery Architecture Download PDFInfo
- Publication number
- US20140267439A1 US20140267439A1 US13/929,725 US201313929725A US2014267439A1 US 20140267439 A1 US20140267439 A1 US 20140267439A1 US 201313929725 A US201313929725 A US 201313929725A US 2014267439 A1 US2014267439 A1 US 2014267439A1
- Authority
- US
- United States
- Prior art keywords
- image
- client device
- resolution
- content item
- recited
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R19/00—Arrangements for measuring currents or voltages or for indicating presence or sign thereof
- G01R19/0092—Arrangements for measuring currents or voltages or for indicating presence or sign thereof measuring current only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformation in the plane of the image
- G06T3/40—Scaling the whole image or part thereof
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02M—APPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
- H02M1/00—Details of apparatus for conversion
- H02M1/08—Circuits specially adapted for the generation of control voltages for semiconductor devices incorporated in static converters
- H02M1/088—Circuits specially adapted for the generation of control voltages for semiconductor devices incorporated in static converters for the simultaneous control of series or parallel connected semiconductor devices
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02M—APPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
- H02M3/00—Conversion of dc power input into dc power output
- H02M3/02—Conversion of dc power input into dc power output without intermediate conversion into ac
- H02M3/04—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
- H02M3/10—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
- H02M3/145—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
- H02M3/155—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
- H02M3/156—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02M—APPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
- H02M3/00—Conversion of dc power input into dc power output
- H02M3/02—Conversion of dc power input into dc power output without intermediate conversion into ac
- H02M3/04—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
- H02M3/10—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
- H02M3/145—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
- H02M3/155—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
- H02M3/156—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
- H02M3/157—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators with digital control
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02M—APPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
- H02M3/00—Conversion of dc power input into dc power output
- H02M3/02—Conversion of dc power input into dc power output without intermediate conversion into ac
- H02M3/04—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
- H02M3/10—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
- H02M3/145—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
- H02M3/155—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
- H02M3/156—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
- H02M3/158—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators including plural semiconductor devices as final control devices for a single load
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03L—AUTOMATIC CONTROL, STARTING, SYNCHRONISATION, OR STABILISATION OF GENERATORS OF ELECTRONIC OSCILLATIONS OR PULSES
- H03L5/00—Automatic control of voltage, current, or power
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/66—Digital/analogue converters
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02M—APPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
- H02M1/00—Details of apparatus for conversion
- H02M1/0003—Details of control, feedback or regulation circuits
- H02M1/0009—Devices or circuits for detecting current in a converter
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02M—APPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
- H02M3/00—Conversion of dc power input into dc power output
- H02M3/02—Conversion of dc power input into dc power output without intermediate conversion into ac
- H02M3/04—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters
- H02M3/10—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode
- H02M3/145—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal
- H02M3/155—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only
- H02M3/156—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators
- H02M3/1566—Conversion of dc power input into dc power output without intermediate conversion into ac by static converters using discharge tubes with control electrode or semiconductor devices with control electrode using devices of a triode or transistor type requiring continuous application of a control signal using semiconductor devices only with automatic control of output voltage or current, e.g. switching regulators with means for compensating against rapid load changes, e.g. with auxiliary current source, with dual mode control or with inductance variation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/66—Digital/analogue converters
- H03M1/68—Digital/analogue converters with conversions of different sensitivity, i.e. one conversion relating to the more significant digital bits and another conversion to the less significant bits
- H03M1/682—Digital/analogue converters with conversions of different sensitivity, i.e. one conversion relating to the more significant digital bits and another conversion to the less significant bits both converters being of the unary decoded type
- H03M1/685—Digital/analogue converters with conversions of different sensitivity, i.e. one conversion relating to the more significant digital bits and another conversion to the less significant bits both converters being of the unary decoded type the quantisation value generators of both converters being arranged in a common two-dimensional array
Definitions
- cloud-based storage for various digital content items (e.g., text, audio, images, and video items). Following storage, these content items may be downloaded or streamed from the cloud-based computing services to cone or more client devices.
- Many sites exist today allow users to post or otherwise store their own content in cloud-based storage for either private or public consumption. For instance, sites like Flickr®, Facebook®, Pinterest®, Dropbox®, YouTube®, and others allow users to post content in the form of text, images, audio, and video for others to view.
- a logical grouping of servers that deliver content to clients is often referred to as a content delivery network or CDN.
- the common arrangement further includes backend servers that perform various functions such as data aggregation, storage, analysis, and searching.
- the client-facing or frontend servers communicate with the backend servers as part of the process for serving content to a user.
- an intake server may use its central processing units (CPUs) to create multiple versions, such as a smaller version of the image (e.g., 100 ⁇ 76 or 3 kB), a medium version of the image (e.g., 512 ⁇ 384 or 20 kB), and a bigger version of the image (e.g., 640 ⁇ 480 or 50 kB).
- CPUs central processing units
- the content delivery network When the content delivery network receives a request for the image, it determines the display requirements of the client device and initiates a fetch to retrieve the appropriate version of the image.
- the CDN may fetch the small version of the image from the backend content storage. This small version is ultimately served to the client device.
- the CDN may fetch the bigger version or the full resolution version of the image from the backend content storage. The CDN then serves this larger version of the image to the client device.
- FIG. 1 illustrates an example image delivery architecture in which only a single copy of a content item, such as an image, is maintained and any new version of the content item is produced at the time of delivery.
- a content item such as an image
- FIG. 2 is a block diagram showing select components in a content delivery network used in the image delivery architecture of FIG. 1 .
- FIG. 2 further illustrates how the content item is scaled at the time of delivery.
- FIG. 3 is a block diagram showing additional select components in the content delivery network similar to FIG. 2 , but further illustrating use of boundary markers to segment the content item for parallel processing during content transformation.
- FIGS. 4 and 5 show a flow diagram illustrating an example process executed by various devices in the architecture to store a single version of a content item and transform the content item at the time of delivery to different client devices.
- FIG. 6 illustrates another example image delivery architecture in which only a single copy of a content item is maintained and versions of the content item are scaled by the client device after delivery.
- FIG. 7 is a flow diagram illustrating an example process executed by various devices in the architecture of FIG. 6 to store a single version of a content item and transform the content item after delivery to the customer.
- This disclosure describes architectures and techniques for storing content items in cloud-based storage and delivering the content items from the cloud-based storage to client devices in response to requests from users.
- a content item such as an image
- the architecture described herein may store as little as just a single copy of the content item.
- a full resolution version of the image is stored in the cloud-based storage.
- the architecture significantly reduces the number of copies of the content item (e.g., 1, 2 or a few) to be stored in comparison to conventional architectures that stored a full set of possible rendered versions (e.g., on a scale of dozens of copies in various formats and sizes).
- the frontend content delivery network is configured with servers that are equipped with one or more graphic processing units (GPUs).
- GPUs graphic processing units
- a GPU is a specialty electronic circuit designed to rapidly manipulate and accelerate the creation of visual images for output to a display.
- the CDN determines the display capabilities of the requesting device either from data received with the request or through independent processes.
- the CDN retrieves the image from the cloud-based storage and uses the GPUs to rescale the image in real-time at the time of delivery to the client device.
- FIG. 1 illustrates an example architecture of a computing system 100 that includes cloud-based storage and computing resources 102 to receive content from, and serve content to, client devices associated with various users.
- the cloud resources 102 may be representative of various sites on the web that allow users to store content and subsequently share or retrieve that content using any number of devices. Examples of such sites might include entertainment sites, organization or collection sites, photo sites, social network sites, e-commerce sites, advertising sites, or the like.
- a first user 104 uses a first client device 106 , such as a desktop computer, to post content items for storage in the cloud resources 102 .
- the content items may include any type of media, such as text, audio, images, and video.
- the content items may take the form of textual posts, digital photographs, songs, movies, and so forth.
- the user 104 is on a site that allows the user to post digital images.
- the content items stored in the cloud resources 102 may be placed there through other techniques than a user uploading the items.
- the cloud resources 102 may communicate with other resources (e.g., such as other websites or storage locations) to retrieve and store the content items.
- a graphical user interface (GUI) 108 is depicted on the display of the client device 106 .
- the GUI 108 may be rendered based on instructions provided by the site to the computer's browser.
- the GUI 108 includes multiple post areas 110 , each of which has an associated image or collection of images. As shown here, ten images are shown posted, including images I 1 -I 9 and a new image 112 of a person's portrait, as represented by the smiley face symbol.
- the GUI 108 allows the user to upload the digital images for storage in the cloud resources 102 and to search the user's personal images, as well as other people's images to which the user has been given permission or that were made public by the poster. While a desktop computer is shown, essentially any computing device with memory, processing, and display technologies may be used to depict the GUI 108 and post the images, such as new image 112 .
- the user's client device 106 is coupled to communicate with the cloud resources 102 via one or more network(s) 114 .
- the network(s) 114 are representative of generally any type of wireless or wired networks including, as non-limiting examples, an intranet, a home network, the Internet, cable networks, cellular networks, radio networks, near-field networks, a LAN, WAN, VPN, Wi-Fi, and so on. Protocols and components for communicating via such networks are well known and will not be discussed herein in detail.
- the cloud resources 102 include processing, storage, and networking technologies. As shown in FIG. 1 , the resources are generally arranged to include frontend resources that interface with the client devices and backend resources that perform various functions such as data aggregation, content storage, analysis, and searching.
- the frontend resources include UI and upload servers 120 and a content delivery network (CDN) 122 .
- the backend resources include content storage 124 . While the figures may imply that the frontend and backend resources are co-located in a single location, it is to be appreciated that these various resources may be distributed across different locations.
- the resources within the logical groups, such as the CDN 122 may be distributed across multiple datacenters at different locations.
- the UI and upload servers 120 include one or more servers 126 that are configured with code to serve the GUI 108 when the user visits the site.
- the servers 120 further facilitate ingestion of images or other content items that the user desires to store in the content storage 124 .
- the servers 126 may be implemented as a single server, a cluster of servers, a server farm or datacenter with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used. Further, the described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and/or services of multiple entities or enterprises.
- a full resolution image may be a digital color image that is capable of rendering at a resolution of 1024 ⁇ 768 pixels (i.e., a width of 1024 pixels and a height of 768 pixels). This image resolution may equate to a size of approximately 1 MB of data.
- various image formats may be used, such as JPG, GIF, PNG, and so forth.
- the servers 126 send the image to the content storage 124 at the backend of the cloud resources 102 .
- the content storage 124 includes one or more servers 128 that are configured to store images or other content items in persistent storage or datastores, as represented by a datastore 130 .
- a single copy of the image 112 is shown stored in the datastore 130 .
- the servers 128 may be implemented in any number of ways, including as database servers, file servers, and so on.
- the servers include components such as processors (e.g., central processing units or CPUs) and computer-readable media. Each processor may itself comprise one or more processors or cores.
- the computer-readable media may be an example of non-transitory computer storage media and may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
- Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other computer-readable media technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store content items and which can be accessed by the processors directly or through another computing device.
- the computer-readable media may be computer-readable media able to maintain instructions, modules, or components executable by the processor, as well as the content items such as image 112 .
- the content storage 124 may further include compression modules 132 that execute on the server processors to compress the content items prior to storage.
- the compression modules 132 may use any forms of compression algorithms, depending in part upon the content type being compressed.
- the compression format may include JPEG, GIF, JNP, etc. Accordingly, the image 112 may be stored in its full size (e.g., 1 MB) or compressed to a smaller file size (e.g., ⁇ 1 MB) without loss of resolution quality when decompressed for serving.
- the content storage 124 may also implement a marker module 134 that executes on the server processors to mark certain features or locations of the images or other content items. For instance, in video items, restart markers or key frames may be used to identify sets of multiple frames. Markers may also be used for JPEG images. These markers identify various boundaries in the image that allow the image to be segmented. These markers may be used for a compressed or non-compressed image so that image segments may be processed without first being decoded or decompressed. In this manner, segments of the images may be processed in parallel by GPUs during delivery to improve responsiveness (i.e., decrease latency), as will be described below in more detail.
- a marker module 134 that executes on the server processors to mark certain features or locations of the images or other content items. For instance, in video items, restart markers or key frames may be used to identify sets of multiple frames. Markers may also be used for JPEG images. These markers identify various boundaries in the image that allow the image to be segmented. These markers may be used for a compressed or
- modules for processing images or other content items may be stored and executed at the content storage 124 .
- the content delivery network 122 includes one or more servers 140 to receive requests from users for various content items stored in the content storage 124 and deliver those requested content items to the users.
- the servers 140 generally include processors and storage media to store and execute various modules, data, information, and instructions.
- the servers 140 may be arranged in any number of ways, including as a single server, a cluster of servers, a server farm or data center with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used.
- the servers 140 are equipped with many graphic processing units (GPUs) 142 .
- GPUs 142 may be any type of specialty processors designed to process image data at a much faster rate than traditional CPUs or other types of processors.
- the servers 140 may or may not include CPUs, but are specially configured to process the images and other content items using the GPUs.
- the GPUs 142 may be used to rescale the images, such as image 112 , into any number of resolutions or sizes. Due to the processing speeds, the GPUs 142 are able to rescale the images in real time, in response to user requests for delivery of the images.
- One example type of GPU is any of the GPUs available from NVIDIA Corporation.
- GPU is being used herein to describe a special function processing unit, other arrangements of massively parallel server cores configured to specifically process visual content items rapidly may be used for the purposes defined herein as graphic processing units.
- the content delivery network 122 may further include a device type identifier 144 to discern the types of clients making requests. Identifying the types of clients helps to ascertain what type of display capabilities and formats are supported by the client devices when rendering the content items. For instance, a smartphone has different size and format constraints for rendering a digital image than a tablet or desktop computer. Furthermore, in some situations, different resolution images may be rendered on the same display but within different size screen areas. For instance, in a social networking or e-commerce context, a small image (e.g., a thumbnail) may be rendered initially in a small location on one screen, and then upon selection of the small image, a larger version of that image may be rendered in a larger display area.
- a small image e.g., a thumbnail
- the content delivery network 122 may also maintain a short-term cache 146 to temporarily store content items for delivery to requesting users.
- the cache 146 may be formed of any type of memory or storage media, such as RAM, flash memory, or other computer-readable media technology.
- a population of multiple users 150 may use any number of client devices 152 to request content from the cloud resources 102 .
- the users 150 are representative of the people who use or access the site supported by the cloud resources 102 .
- the users 150 may represent consumers, friends, family members, sellers, buyers, hobbyists, and so forth.
- the users' population 150 may further include the original posting user 104 .
- Each of these users 150 may access one or more content items stored on the backend content storage 124 .
- each of the users 150 may request access to the image 112 posted by the user 104 .
- the users 150 may be from the general population, if no restrictions are placed on who can access the image 112 , or part of a select group within a network defined by the posting user 104 or other content managers.
- the devices 152 used by the users 150 may be of any type or profile of electronic devices that can be used to consume content items. These devices 152 generally include processing and memory resources, but are also equipped with (or able to access) a display for rending the content items. Any type of display technologies may be employed, such as liquid crystal display, plasma display, light emitting diode display, organic light emitting diode display, and so forth.
- Representative client devices shown in FIG. 1 include a desktop computer 152 - 1 , a tablet 152 - 2 , a television or large display 152 - 3 , a personal digital assistant 152 - 4 , a laptop 152 - 5 , and a smart phone or other communication device 152 - 6 . Each of these devices 150 has different display capabilities, including various size constraints, processing capabilities, resolution levels, and so forth.
- the users 150 utilize the various devices 152 to access the cloud resources 102 via one or more networks 154 .
- the network(s) 154 may be one or more types of wired and wireless networks, including cellular, cable, Wi-Fi, LAN, WAN, Internet, and so forth.
- the devices 152 may be equipped with one or more communication interfaces that support both wired and wireless connection to the networks 154 , such as cellular, radio, Wi-Fi, short-range or near-field networks (e.g., Bluetooth®), infrared, and so forth.
- a first user e.g., user 150 - 1
- a request for the image 112 may be spawned by the user merely visiting the site and the desired image 112 is automatically served to the device 152 - 1 as part of a page of content. In other situations, the request may be explicit from the user who identifies and selects the image.
- the image 112 is posted to a collections or photo-sharing site and by accessing this site, the user 150 - 1 initially sees a small version of this image associated with content from the posting user 104 . After viewing this initial page, suppose that the user selects the image to see it in a larger form. Both accessing the site and user selection may be interpreted by the site as a request for versions of the image 112 maintained in the backend content storage 124 .
- the content delivery network 122 fetches or otherwise retrieves the image 112 from the persistent datastore 130 of the content storage 124 .
- the CDN 122 may temporarily store the image 112 in the short-term cache 146 .
- the device type identifier 144 attempts to discern the type of client device making the request.
- the client request may include metadata that informs the CDN 122 of the display capabilities or the size of the image it is requesting.
- the request may include metadata indicating the type of client device. In this latter case, the device type identifier 144 uses the metadata to look up the device's display capabilities to understand what types of software, hardware, and/or display technologies are present to render the image.
- the display capabilities might include hardware capabilities (e.g., whether the display has sufficient pixel density to render high resolution images), software capabilities imposed by the operating system or application (e.g., size of the window or space allocated to display the image), or a combination of hardware and software capabilities. Identifying the device type and retrieving the image 112 may be done in parallel to save time.
- the GPUs 142 of the CDN 122 rescale the image 112 from its full resolution as stored in the datastore 130 to one or more versions that are different than the original resolution of the image. This resealing is performed in real-time with minimal added latency as part of the process of delivering the image to the requesting user.
- the GPUs 142 may rescale the image 112 to a small version of the image (e.g., 100 ⁇ 76 or 3 kB) that appears as a thumbnail image in association with the posting user.
- a new request is submitted to the CDN 122 and the GPUs 142 either serve the full original image 112 or rescale it to a larger version of the image (e.g., 640 ⁇ 480 or 50 kB) for rendering on the larger desktop display. This is represented by the rendering of the full version or larger version of the image 112 (L) on the display screen of the computer 152 - 1 .
- the GPUs may oversize or scale up the image from its original resolution.
- the device type identifier 144 may recognize that the request is from a mobile device (e.g., received as part of a cellular communication format, etc.) and hence, the GPUs 142 rescale the image to a medium version of the image (e.g., 512 ⁇ 384 or 20 kB) that is capable of being displayed on the mobile device. This is represented by the rendering of the medium version of the image 112 (M) on the display screen of the computer 152 - 1 .
- M medium version of the image 112
- the GPUs 142 are configured to process the images at the edge or frontend of the cloud services during fulfillment of a client request. Due to the high processing speeds tailored for visual images, the GPUs 142 are able to perform the rescaling in real-time without noticeable degradation in the user experience. As a result, only one copy of the image is maintained in the content storage (apart from perhaps usual redundancy measures where images may be redundantly maintained in separate systems or locations), thereby saving storage costs.
- a temporary copy of the full resolution image may be maintained for a brief time in the short-term cache 146 .
- the CDN 122 can immediately rescale the images on the fly without making another fetch to the backend storage 124 . This further decreases latency, thereby improving user experience.
- the client device can request essentially any size or resolution desired, and the GPUs 142 can resize the image to satisfy the request.
- FIG. 2 shows select components in the content delivery network 122 and a corresponding illustration to represent how a content item, such as an image, is scaled at the time of delivery.
- the servers 140 of the CDN 122 include multiple CPUs 202 , computer-readable media 204 , multiple GPUs 142 , and one or more communication interfaces 206 .
- the CPUs 202 may include multiple computing units or multiple cores.
- the CPUs 202 are configured to fetch and execute computer-readable instructions stored in the computer-readable media 204 or other computer-readable media, such as a coder/decoder (codec) module 208 and an image segmenting module 210 .
- codec coder/decoder
- the computer-readable media 204 may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules or other data.
- Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device.
- the computer-readable media 204 may be a type of computer-readable storage media and may be a non-transitory storage media.
- the computer-readable media 204 may be used to store any number of functional components that are executable by the CPUs 202 .
- these functional components comprise instructions or programs that are executable by the CPUs 202 and that, when executed, implement operational logic for performing the actions attributed to the CDN 122 .
- the communication interface(s) 206 may include one or more interfaces and hardware components for enabling communication with various client devices 152 and/or backend computing devices, such as the content storage servers 128 .
- communication interface(s) 206 may facilitate communication through one or more of the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi, cellular) and wired networks.
- the GPUs 142 may be implemented by multiple specially designed processors for handling large calculations involved in rending or transforming images.
- the GPUs 142 may be multiple computing units or multiple cores, and may be configured to run in parallel with one another to improve throughput speeds.
- Various instructions, methods, and techniques described herein may be considered in the general context of computer-executable instructions, such as program modules stored on computer storage media and executed by the processors herein.
- program modules include routines, programs, objects, components, data structures, etc., for performing particular tasks or implementing particular abstract data types.
- These program modules, and the like may be executed as native code or may be downloaded and executed, such as in a virtual machine or other just-in-time compilation execution environment.
- the functionality of the program modules may be combined or distributed as desired in various implementations.
- An implementation of these modules and techniques may be stored on computer storage media or transmitted across some form of communication media.
- Illustrated to the right of the CDN components is a process flow diagram that shows how the CDN 122 can rapidly process an image (or other content item) in real-time as part of responding to a request.
- the image is received in a compressed format 220 from the content storage 124 .
- the compressed image may be in any suitable format, such as JPG, GIF, PNG, and so on.
- the codec module 208 decompresses the received compressed image to restore a full resolution image 222 .
- the codec module 208 may be implemented in software, hardware, and/or firmware.
- the codec module 208 may be software executed by the CPUs 202 . In this manner, only one copy of a full resolution image is maintained in a compressed format by the content storage 124 .
- the image segmenting module 210 is then used to segment the image into multiple image segments, as represented by the four image segments 222 (A), 222 (B), 222 (C), and 222 (D). Each of these image segments 222 (A)-(D) is provided in parallel to GPUs 142 ( 1 )-( 4 ), respectively.
- the GPUs 142 ( 1 )-( 4 ) are downsizing the image to a smaller resolution, as represented by the smaller image segments 224 (A), 224 (B), 224 (C), and 224 (D).
- the smaller image segments 224 (A)-(D) are put back together to form a resealed image 226 , which can then be delivered to the client device.
- the GPUs 142 may put the image segments back together and the CPUs 202 may manage delivery of the resealed image 226 to the client devices.
- FIG. 3 shows select components in the content delivery network 122 additional select components in the content delivery network similar to FIG. 2 , but further illustrates use of boundary markers to segment the image.
- the image 222 is stored in full resolution in the content storage 124 and it may or may not be maintained in a compressed format.
- Boundary markers 302 are added to the full resolution image 222 or the compressed image 220 to allow segmentation of the image for parallel processing by the GPUs 142 ( 1 )-( 4 ).
- the marker module 134 of the content storage 124 adds the markers during ingestion of the images prior to storage in the datastore 130 .
- the CDN 122 implements a marker reader module 304 to locate the markers and pass it to the image segmentation module 210 for use in segmenting the image regardless of whether it is compressed or uncompressed.
- the image does not need to be decoded prior to processing by the GPUs 142 . Rather, the image segments of the compressed image may be processed in parallel by the GPUs 142 .
- FIGS. 4 and 5 show an example process 400 executed by various devices in the system 100 to store a single version of a content item, such as an image, and scale the content item at the time of delivery.
- the process is illustrated as a collection of blocks in logical flow diagrams, which represent a sequence of operations, some or all of which can be implemented in hardware, software or a combination thereof.
- the blocks represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, perform the recited operations.
- computer-executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described should not be construed as a limitation.
- a new image is posted for cloud-based storage.
- the user 104 uses a user interface 108 to select and post an image via the computer 106 .
- the image is transferred from the computer 106 over the network 114 to the cloud resources 102 .
- the upload servers 120 receive the image and move it to the backend content storage 124 .
- the content storage 124 of the cloud resources 102 stores a single copy of the image, in full resolution, within persistent storage. With reference to FIG. 1 , this may be accomplished by storing the full resolution image 112 in the datastore 130 .
- the image may be compressed prior to storage. These may be accomplished, for example, by the compression module 132 using any number of known compression algorithms.
- the boundary markers may be added to the image prior to storage. For instance, markers may be added to define possible segmentations of the image for parallel processing. The marker module 134 executing on the backend servers 128 may be used to place these markers during ingestion of the image.
- a request for the image is received from a user (e.g., user 1 ) via a client device (e.g., client device 1 ).
- the request is transmitted over the network 154 to the content delivery network 122 .
- the request is received at the cloud resources 102 , and namely the CDN 122 .
- the display capabilities of the client device are ascertained. There are multiple ways to discern the display capabilities.
- the request may include metadata describing the display capabilities or defining the size of the image need to fill an area of the screen.
- a device type identifier module 144 may be employed to ascertain the display capabilities of the client device by retrieving the display capabilities based on an identifier of the client device or any other clues that may be present in the request.
- the full resolution image is retrieved from the persistent storage.
- the image may be in a compressed or uncompressed format.
- the image may be cached in a short-term cache.
- the cache 146 is local to the CDN 122 and separate from the persistent storage, such as datastore 130 . In this manner, subsequent requests for the image may be handled judiciously without fetching the image again from the backend content storage 124 .
- the cached image may be subsequently terminated or deleted according to any type of protocols, such as time-based protocols, usage-based protocols, and so forth.
- the image is resealed using one or more graphic processing units to form a resealed image at a resolution different from the full resolution, assuming the display capabilities do not support the image in the full resolution.
- the display capabilities include both hardware capabilities (e.g., whether the display has sufficient pixel density to support high resolution images), software capabilities (e.g., size of the window or space allocated to display the image, such as a thumbnail, or larger location), or a combination of hardware and software capabilities.
- the resealing may include segmenting the image into multiple segments and processing the multiple segments in parallel with multiple GPUs.
- the resealing may also include decompressing the image if the image was retrieved in a compressed format.
- the GPUs may perform other image processing tasks.
- the GPUs may perform such tasks as cropping, adding boarders, modifying backgrounds, altering color, and so forth.
- the resealed image is served back to the requesting device.
- the resealed image is received and rendered on the requesting client device.
- FIG. 5 continues the process 400 for subsequent requests of the image, which is being temporarily stored in the cache.
- a request for the image is received from another user (e.g., user 2) via a different or second client device (e.g., client device 2).
- the request is transmitted over the network 154 to the content delivery network 122 .
- the request is received at the cloud resources 102 , and namely the CDN 122 .
- the display capabilities of the second client device are ascertained.
- the full resolution image is retrieved from the local cache at the CDN 122 , rather than fetching the image from the backend content storage 124 . In this way, the time to retrieve the image is reduced.
- the image is resealed using one or more GPUs to form yet another resealed image that might be at a resolution different from the full resolution or the first resolution served to the first client device.
- the resealed image is served back to the requesting device.
- the resealed image is received and rendered on the requesting client device.
- the process 400 in FIGS. 4 and 5 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions.
- the process 400 Upon receiving a request for the image, the process 400 allows for resizing of the images on the fly using high-powered GPUs at the edge of the cloud resources. Subsequent requests for the same image may then be resized on the fly using the GPUs without even having to fetch the image from the datastore. This allows for reduced storage costs, while avoiding any notable increase in latency and in some cases reducing latency.
- the image is stored once and resized in real-time by GPUs near the edge of the cloud services 102 .
- the bandwidth within the cloud network (not shown) between the frontend servers and backend servers is typically very high relative to the bandwidth of the distribution network 154 between the cloud resources and the client device.
- the real-time image processing is performed as close to the edge as possible, such as in the CDN 122 .
- the image processing may be pushed closer to the end user.
- the image is resealed after it is delivered to the client side over the network 154 , such as by the client itself or a more proximal/local computing device that is equipped with GPUs.
- FIG. 6 shows another example architecture of a computing system 600 that includes cloud-based storage and computing resources 602 that receive content from, and serve content to, client devices of various users.
- the cloud resources 602 are similar to the cloud resources 102 of FIG. 1 , with the exception that the content delivery network 604 implements servers 606 that are not specially modified with many GPUs. Instead, the CDN 604 retrieves the full resolution image 112 from the backend content storage 124 and serves the full resolution image 112 over the network 154 to one or more local resources.
- the client device 608 may be equipped with its own GPU 610 that rescales the image in real-time as the image is received.
- a local area computing device 612 e.g., cable box, home-based server, entertainment device, etc.
- a GPU 614 may be equipped with a GPU 614 to rescale the image as appropriate for a local display. Once resealed, the computing device 612 may transfer the rescaled image to the client device 608 via a wireless or wired connection.
- FIG. 7 shows an example process 700 executed by various devices in the system 600 to store a single version of a content item, such as an image, and scale the content item after delivery to the customer.
- a request for the image is submitted by the user's device, such as the tablet 608 .
- the request may be transmitted over the network 154 to the CDN 604 , which either fetches the full resolution image from the datastore 130 or from the local cache 146 if previously cached.
- the request is received at the cloud resources, namely the CDN 604 .
- the CDN 604 retrieves the full resolution image either from the persistent storage 130 or from the local cache 146 , at 706 .
- the full resolution image is served to over the distribution network 154 to the client side.
- the full resolution image is received by either the client device 608 or a client-side computing device 612 .
- Either or both of these devices are equipped with a GPU, such as GPUs 610 and 614 .
- the client-side GPU rescales the image to fit the display space available for displaying the image. The rescaled image is then presented on the display, at 714 .
- the process 700 in FIG. 7 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions.
- the process 700 transfers the full resolution image over the network to the client-side, where the image is subsequently resized using high-powered GPUs on the client side. This process allows for reduced storage costs, while avoiding any notable increase in latency.
Abstract
A system includes cloud-based resources having backend storage for maintaining single copies of display content items, such as images, and a frontend content delivery network (CDN) to dynamically format and deliver the content items in response to client requests. In the case of digital images, for example, a single copy of full resolution version of the image is stored in the backend storage, rather than dozens of versions with different resolutions. The frontend CDN is configured with multiple graphic processing units (GPUs) configured to rescale the full resolution image in real-time at the time of delivery to the client device. By resealing images on the fly at the edge of the cloud-based resources, the system reduces storage costs while minimizing any negative impact on latency.
Description
- With the explosion of inexpensive storage and ever increasing network bandwidth, there has been rapid growth of cloud-based storage for various digital content items (e.g., text, audio, images, and video items). Following storage, these content items may be downloaded or streamed from the cloud-based computing services to cone or more client devices. Many sites exist today allow users to post or otherwise store their own content in cloud-based storage for either private or public consumption. For instance, sites like Flickr®, Facebook®, Pinterest®, Dropbox®, YouTube®, and others allow users to post content in the form of text, images, audio, and video for others to view.
- Conventional cloud-based architectures typically involve logical arrangements of large numbers of servers to perform various functions. One common arrangement involves client-facing servers that receive requests from client devices, process those requests to discern what content the user is seeking, and then ultimately deliver the requested content to the client devices. A logical grouping of servers that deliver content to clients is often referred to as a content delivery network or CDN. The common arrangement further includes backend servers that perform various functions such as data aggregation, storage, analysis, and searching. Typically, the client-facing or frontend servers communicate with the backend servers as part of the process for serving content to a user.
- Over the years, the primary focus of cloud-based architectures has been improving speed and quality to the clients. For sites that permit storage of content, site operators continually weigh customer experience (e.g., latency from the time a request for a content item is received to delivery of the content item to the user) against storage costs and/or bandwidth requirements. The problem is complicated by the number of devices currently available to consume the content items because the various devices have different processing, interface, and display capabilities. For example, an image or video clip may be presented on any number of devices, including on a smart phone, tablet, laptop, desktop computer, or television. Each of these devices may require different formats of the image or video clip.
- To illustrate these challenges facing content site operators in more detail, consider a scenario of an example site that allows users to post images. Suppose a user posts a full resolution image (e.g., 1024×768 or 1 MB) to the site. Today, it is common for site operators to process this full resolution image and create multiple versions of this image that can be served to different client devices. For instance, an intake server may use its central processing units (CPUs) to create multiple versions, such as a smaller version of the image (e.g., 100×76 or 3 kB), a medium version of the image (e.g., 512×384 or 20 kB), and a bigger version of the image (e.g., 640×480 or 50 kB). All of these multiple versions, along with the original image, are stored in content storage for subsequent retrieval and distribution. In some cases, it is not uncommon for site operators to re-render dozens of image versions having different sizes, resolutions, or other features for delivery to myriad client devices.
- When the content delivery network receives a request for the image, it determines the display requirements of the client device and initiates a fetch to retrieve the appropriate version of the image. Suppose, in our example, that the user requests the image from her smartphone. The CDN may fetch the small version of the image from the backend content storage. This small version is ultimately served to the client device. Now, suppose the user (or another user) requests the image from a browser in her desktop computer. In this case, the CDN may fetch the bigger version or the full resolution version of the image from the backend content storage. The CDN then serves this larger version of the image to the client device.
- With the current architectures, creating and storing multiple versions of the image in the backend storage results in higher operation costs in terms of heightened processing resources and increased storage requirements. Further, each request for a different image version requires a fetch operation that may affect customer experience through increased latency. In some situations, the fetched images may be temporarily cached at the CDN to accommodate future requests for the same image version. Unfortunately, this exacerbates the storage inefficiencies as these multiple versions are maintained at the edge of the cloud in addition to the full set of image versions being maintained at the backend content storage.
- Accordingly, there remains a continuing need for improved architectures that reduce operating costs while improving customer experience.
- The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features.
-
FIG. 1 illustrates an example image delivery architecture in which only a single copy of a content item, such as an image, is maintained and any new version of the content item is produced at the time of delivery. -
FIG. 2 is a block diagram showing select components in a content delivery network used in the image delivery architecture ofFIG. 1 .FIG. 2 further illustrates how the content item is scaled at the time of delivery. -
FIG. 3 is a block diagram showing additional select components in the content delivery network similar toFIG. 2 , but further illustrating use of boundary markers to segment the content item for parallel processing during content transformation. -
FIGS. 4 and 5 show a flow diagram illustrating an example process executed by various devices in the architecture to store a single version of a content item and transform the content item at the time of delivery to different client devices. -
FIG. 6 illustrates another example image delivery architecture in which only a single copy of a content item is maintained and versions of the content item are scaled by the client device after delivery. -
FIG. 7 is a flow diagram illustrating an example process executed by various devices in the architecture ofFIG. 6 to store a single version of a content item and transform the content item after delivery to the customer. - This disclosure describes architectures and techniques for storing content items in cloud-based storage and delivering the content items from the cloud-based storage to client devices in response to requests from users. Unlike conventional arrangements where multiple copies of a content item, such as an image, are maintained in the cloud-based storage and then individually fetched based on the display capabilities of the client, the architecture described herein may store as little as just a single copy of the content item. In particular, in the case of digital images, a full resolution version of the image is stored in the cloud-based storage. More generally, the architecture significantly reduces the number of copies of the content item (e.g., 1, 2 or a few) to be stored in comparison to conventional architectures that stored a full set of possible rendered versions (e.g., on a scale of dozens of copies in various formats and sizes).
- The frontend content delivery network (CDN) is configured with servers that are equipped with one or more graphic processing units (GPUs). A GPU is a specialty electronic circuit designed to rapidly manipulate and accelerate the creation of visual images for output to a display. When a user requests the image, the CDN determines the display capabilities of the requesting device either from data received with the request or through independent processes. The CDN retrieves the image from the cloud-based storage and uses the GPUs to rescale the image in real-time at the time of delivery to the client device.
- The following example architectures are described in the context of delivering digital images. However, aspects of the systems and techniques described herein may be applied to other content items, such as audio and video. Furthermore, while this architecture is described in the context of cloud-based storage, aspects of the systems and techniques described herein may be applied to other forms of storage, such as storage area networks (SAN), RAID systems, or hard drives.
-
FIG. 1 illustrates an example architecture of acomputing system 100 that includes cloud-based storage andcomputing resources 102 to receive content from, and serve content to, client devices associated with various users. As one non-limiting example, thecloud resources 102 may be representative of various sites on the web that allow users to store content and subsequently share or retrieve that content using any number of devices. Examples of such sites might include entertainment sites, organization or collection sites, photo sites, social network sites, e-commerce sites, advertising sites, or the like. - In this illustration, a
first user 104 uses afirst client device 106, such as a desktop computer, to post content items for storage in thecloud resources 102. Depending upon the implementation, the content items may include any type of media, such as text, audio, images, and video. The content items may take the form of textual posts, digital photographs, songs, movies, and so forth. In this particular example, theuser 104 is on a site that allows the user to post digital images. In other scenarios, the content items stored in thecloud resources 102 may be placed there through other techniques than a user uploading the items. For instance, thecloud resources 102 may communicate with other resources (e.g., such as other websites or storage locations) to retrieve and store the content items. - A graphical user interface (GUI) 108 is depicted on the display of the
client device 106. TheGUI 108 may be rendered based on instructions provided by the site to the computer's browser. TheGUI 108 includesmultiple post areas 110, each of which has an associated image or collection of images. As shown here, ten images are shown posted, including images I1-I9 and anew image 112 of a person's portrait, as represented by the smiley face symbol. TheGUI 108 allows the user to upload the digital images for storage in thecloud resources 102 and to search the user's personal images, as well as other people's images to which the user has been given permission or that were made public by the poster. While a desktop computer is shown, essentially any computing device with memory, processing, and display technologies may be used to depict theGUI 108 and post the images, such asnew image 112. - The user's
client device 106 is coupled to communicate with thecloud resources 102 via one or more network(s) 114. The network(s) 114 are representative of generally any type of wireless or wired networks including, as non-limiting examples, an intranet, a home network, the Internet, cable networks, cellular networks, radio networks, near-field networks, a LAN, WAN, VPN, Wi-Fi, and so on. Protocols and components for communicating via such networks are well known and will not be discussed herein in detail. - The
cloud resources 102 include processing, storage, and networking technologies. As shown inFIG. 1 , the resources are generally arranged to include frontend resources that interface with the client devices and backend resources that perform various functions such as data aggregation, content storage, analysis, and searching. The frontend resources include UI and uploadservers 120 and a content delivery network (CDN) 122. The backend resources includecontent storage 124. While the figures may imply that the frontend and backend resources are co-located in a single location, it is to be appreciated that these various resources may be distributed across different locations. Moreover, the resources within the logical groups, such as theCDN 122, may be distributed across multiple datacenters at different locations. - The UI and upload
servers 120 include one ormore servers 126 that are configured with code to serve theGUI 108 when the user visits the site. Theservers 120 further facilitate ingestion of images or other content items that the user desires to store in thecontent storage 124. Theservers 126 may be implemented as a single server, a cluster of servers, a server farm or datacenter with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used. Further, the described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and/or services of multiple entities or enterprises. - For purposes of continuing discussion, suppose the
user 104 decides to post anew image 112 through theGUI 108 to be uploaded and stored on the cloud-based storage. Theuser 104 may employ various techniques to identify thenew image 112 and initiate the process to transfer that image from theclient device 106 over thenetworks 114 to the uploadservers 126 at the frontend of thecloud resources 102. In one implementation, theuser 104 selects a full resolution version of the image. In one example format today, a full resolution image may be a digital color image that is capable of rendering at a resolution of 1024×768 pixels (i.e., a width of 1024 pixels and a height of 768 pixels). This image resolution may equate to a size of approximately 1 MB of data. Furthermore, various image formats may be used, such as JPG, GIF, PNG, and so forth. Theservers 126 send the image to thecontent storage 124 at the backend of thecloud resources 102. - The
content storage 124 includes one ormore servers 128 that are configured to store images or other content items in persistent storage or datastores, as represented by adatastore 130. A single copy of theimage 112 is shown stored in thedatastore 130. Theservers 128 may be implemented in any number of ways, including as database servers, file servers, and so on. In a very basic configuration, the servers include components such as processors (e.g., central processing units or CPUs) and computer-readable media. Each processor may itself comprise one or more processors or cores. The computer-readable media may be an example of non-transitory computer storage media and may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other computer-readable media technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store content items and which can be accessed by the processors directly or through another computing device. Accordingly, the computer-readable media may be computer-readable media able to maintain instructions, modules, or components executable by the processor, as well as the content items such asimage 112. - It is important to note that as little as one copy or version of the
image 112 can be stored. In thearchitecture 100, there is no need for additional versions of various sizes/resolutions to be stored in thecontent storage 124. Accordingly, unlike conventional architectures where dozens of versions of the same image may be stored, maintaining as little as a single copy or version of theimage 112 provides significant savings in processing and storage costs. More generally, processing and storage cost savings may be realized when the number of versions stored is less than the total number of possible versions suitable for presentation on a full array of electronic devices. - In some implementations, the
content storage 124 may further includecompression modules 132 that execute on the server processors to compress the content items prior to storage. Thecompression modules 132 may use any forms of compression algorithms, depending in part upon the content type being compressed. For images, the compression format may include JPEG, GIF, JNP, etc. Accordingly, theimage 112 may be stored in its full size (e.g., 1 MB) or compressed to a smaller file size (e.g., <1 MB) without loss of resolution quality when decompressed for serving. - In some implementations, the
content storage 124 may also implement amarker module 134 that executes on the server processors to mark certain features or locations of the images or other content items. For instance, in video items, restart markers or key frames may be used to identify sets of multiple frames. Markers may also be used for JPEG images. These markers identify various boundaries in the image that allow the image to be segmented. These markers may be used for a compressed or non-compressed image so that image segments may be processed without first being decoded or decompressed. In this manner, segments of the images may be processed in parallel by GPUs during delivery to improve responsiveness (i.e., decrease latency), as will be described below in more detail. - While not shown, it is noted that other types of modules for processing images or other content items may be stored and executed at the
content storage 124. - The
content delivery network 122 includes one ormore servers 140 to receive requests from users for various content items stored in thecontent storage 124 and deliver those requested content items to the users. Theservers 140 generally include processors and storage media to store and execute various modules, data, information, and instructions. Theservers 140 may be arranged in any number of ways, including as a single server, a cluster of servers, a server farm or data center with racks of server blades, virtual servers, and so forth, although other computer architectures (e.g., a mainframe architecture) may also be used. - Of particular note, the
servers 140 are equipped with many graphic processing units (GPUs) 142. TheseGPUs 142 may be any type of specialty processors designed to process image data at a much faster rate than traditional CPUs or other types of processors. Theservers 140 may or may not include CPUs, but are specially configured to process the images and other content items using the GPUs. In various implementations, theGPUs 142 may be used to rescale the images, such asimage 112, into any number of resolutions or sizes. Due to the processing speeds, theGPUs 142 are able to rescale the images in real time, in response to user requests for delivery of the images. One example type of GPU is any of the GPUs available from NVIDIA Corporation. Further, while the term GPU is being used herein to describe a special function processing unit, other arrangements of massively parallel server cores configured to specifically process visual content items rapidly may be used for the purposes defined herein as graphic processing units. - The
content delivery network 122 may further include adevice type identifier 144 to discern the types of clients making requests. Identifying the types of clients helps to ascertain what type of display capabilities and formats are supported by the client devices when rendering the content items. For instance, a smartphone has different size and format constraints for rendering a digital image than a tablet or desktop computer. Furthermore, in some situations, different resolution images may be rendered on the same display but within different size screen areas. For instance, in a social networking or e-commerce context, a small image (e.g., a thumbnail) may be rendered initially in a small location on one screen, and then upon selection of the small image, a larger version of that image may be rendered in a larger display area. - The
content delivery network 122 may also maintain a short-term cache 146 to temporarily store content items for delivery to requesting users. Thecache 146 may be formed of any type of memory or storage media, such as RAM, flash memory, or other computer-readable media technology. - As shown in
FIG. 1 , a population ofmultiple users 150 may use any number ofclient devices 152 to request content from thecloud resources 102. Theusers 150 are representative of the people who use or access the site supported by thecloud resources 102. Depending upon the type of site (e.g., social network, photo sharing, collections, e-commerce, etc.), theusers 150 may represent consumers, friends, family members, sellers, buyers, hobbyists, and so forth. The users'population 150 may further include theoriginal posting user 104. - Each of these
users 150 may access one or more content items stored on thebackend content storage 124. Suppose, for discussion purposes, that each of theusers 150 may request access to theimage 112 posted by theuser 104. Theusers 150 may be from the general population, if no restrictions are placed on who can access theimage 112, or part of a select group within a network defined by the postinguser 104 or other content managers. - The
devices 152 used by theusers 150 may be of any type or profile of electronic devices that can be used to consume content items. Thesedevices 152 generally include processing and memory resources, but are also equipped with (or able to access) a display for rending the content items. Any type of display technologies may be employed, such as liquid crystal display, plasma display, light emitting diode display, organic light emitting diode display, and so forth. Representative client devices shown inFIG. 1 include a desktop computer 152-1, a tablet 152-2, a television or large display 152-3, a personal digital assistant 152-4, a laptop 152-5, and a smart phone or other communication device 152-6. Each of thesedevices 150 has different display capabilities, including various size constraints, processing capabilities, resolution levels, and so forth. - The
users 150 utilize thevarious devices 152 to access thecloud resources 102 via one ormore networks 154. The network(s) 154 may be one or more types of wired and wireless networks, including cellular, cable, Wi-Fi, LAN, WAN, Internet, and so forth. Thedevices 152 may be equipped with one or more communication interfaces that support both wired and wireless connection to thenetworks 154, such as cellular, radio, Wi-Fi, short-range or near-field networks (e.g., Bluetooth®), infrared, and so forth. - For discussion purposes, suppose a first user (e.g., user 150-1) uses his desktop computer 152-1 to access the
image 112 posted by theoriginal user 104. A request for theimage 112 may be spawned by the user merely visiting the site and the desiredimage 112 is automatically served to the device 152-1 as part of a page of content. In other situations, the request may be explicit from the user who identifies and selects the image. To illustrate, suppose theimage 112 is posted to a collections or photo-sharing site and by accessing this site, the user 150-1 initially sees a small version of this image associated with content from the postinguser 104. After viewing this initial page, suppose that the user selects the image to see it in a larger form. Both accessing the site and user selection may be interpreted by the site as a request for versions of theimage 112 maintained in thebackend content storage 124. - Upon receipt of such requests, the
content delivery network 122 fetches or otherwise retrieves theimage 112 from thepersistent datastore 130 of thecontent storage 124. TheCDN 122 may temporarily store theimage 112 in the short-term cache 146. Meanwhile, thedevice type identifier 144 attempts to discern the type of client device making the request. In some implementations, the client request may include metadata that informs theCDN 122 of the display capabilities or the size of the image it is requesting. In other implementations, the request may include metadata indicating the type of client device. In this latter case, thedevice type identifier 144 uses the metadata to look up the device's display capabilities to understand what types of software, hardware, and/or display technologies are present to render the image. As used herein, the display capabilities might include hardware capabilities (e.g., whether the display has sufficient pixel density to render high resolution images), software capabilities imposed by the operating system or application (e.g., size of the window or space allocated to display the image), or a combination of hardware and software capabilities. Identifying the device type and retrieving theimage 112 may be done in parallel to save time. - Based on the display capabilities of the requesting device, the
GPUs 142 of theCDN 122 rescale theimage 112 from its full resolution as stored in thedatastore 130 to one or more versions that are different than the original resolution of the image. This resealing is performed in real-time with minimal added latency as part of the process of delivering the image to the requesting user. For example, in response to the desktop computer 152-1 accessing the site, theGPUs 142 may rescale theimage 112 to a small version of the image (e.g., 100×76 or 3 kB) that appears as a thumbnail image in association with the posting user. When the user selects the image to view it in a larger format, a new request is submitted to theCDN 122 and theGPUs 142 either serve the fulloriginal image 112 or rescale it to a larger version of the image (e.g., 640×480 or 50 kB) for rendering on the larger desktop display. This is represented by the rendering of the full version or larger version of the image 112(L) on the display screen of the computer 152-1. In some cases, the GPUs may oversize or scale up the image from its original resolution. - Similarly, suppose the user 150-2 uses a smart phone 152-6 to access the
image 112. In this example, thedevice type identifier 144 may recognize that the request is from a mobile device (e.g., received as part of a cellular communication format, etc.) and hence, theGPUs 142 rescale the image to a medium version of the image (e.g., 512×384 or 20 kB) that is capable of being displayed on the mobile device. This is represented by the rendering of the medium version of the image 112(M) on the display screen of the computer 152-1. - In this manner, the
GPUs 142 are configured to process the images at the edge or frontend of the cloud services during fulfillment of a client request. Due to the high processing speeds tailored for visual images, theGPUs 142 are able to perform the rescaling in real-time without noticeable degradation in the user experience. As a result, only one copy of the image is maintained in the content storage (apart from perhaps usual redundancy measures where images may be redundantly maintained in separate systems or locations), thereby saving storage costs. - In addition, a temporary copy of the full resolution image may be maintained for a brief time in the short-
term cache 146. In this way, when subsequent requests for the image are received, theCDN 122 can immediately rescale the images on the fly without making another fetch to thebackend storage 124. This further decreases latency, thereby improving user experience. Indeed, the client device can request essentially any size or resolution desired, and theGPUs 142 can resize the image to satisfy the request. -
FIG. 2 shows select components in thecontent delivery network 122 and a corresponding illustration to represent how a content item, such as an image, is scaled at the time of delivery. Theservers 140 of theCDN 122 include multiple CPUs 202, computer-readable media 204,multiple GPUs 142, and one or more communication interfaces 206. The CPUs 202 may include multiple computing units or multiple cores. The CPUs 202 are configured to fetch and execute computer-readable instructions stored in the computer-readable media 204 or other computer-readable media, such as a coder/decoder (codec)module 208 and animage segmenting module 210. - The computer-
readable media 204 may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules or other data. Such computer-readable media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, solid state storage, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device. Depending on the configuration of theservers 140, the computer-readable media 204 may be a type of computer-readable storage media and may be a non-transitory storage media. - The computer-
readable media 204 may be used to store any number of functional components that are executable by the CPUs 202. In many implementations, these functional components comprise instructions or programs that are executable by the CPUs 202 and that, when executed, implement operational logic for performing the actions attributed to theCDN 122. The communication interface(s) 206 may include one or more interfaces and hardware components for enabling communication withvarious client devices 152 and/or backend computing devices, such as thecontent storage servers 128. For example, communication interface(s) 206 may facilitate communication through one or more of the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi, cellular) and wired networks. - The
GPUs 142 may be implemented by multiple specially designed processors for handling large calculations involved in rending or transforming images. TheGPUs 142 may be multiple computing units or multiple cores, and may be configured to run in parallel with one another to improve throughput speeds. - Various instructions, methods, and techniques described herein may be considered in the general context of computer-executable instructions, such as program modules stored on computer storage media and executed by the processors herein. Generally, program modules include routines, programs, objects, components, data structures, etc., for performing particular tasks or implementing particular abstract data types. These program modules, and the like, may be executed as native code or may be downloaded and executed, such as in a virtual machine or other just-in-time compilation execution environment. Typically, the functionality of the program modules may be combined or distributed as desired in various implementations. An implementation of these modules and techniques may be stored on computer storage media or transmitted across some form of communication media.
- Illustrated to the right of the CDN components is a process flow diagram that shows how the
CDN 122 can rapidly process an image (or other content item) in real-time as part of responding to a request. In this example, the image is received in acompressed format 220 from thecontent storage 124. The compressed image may be in any suitable format, such as JPG, GIF, PNG, and so on. Thecodec module 208 decompresses the received compressed image to restore afull resolution image 222. Thecodec module 208 may be implemented in software, hardware, and/or firmware. For instance, thecodec module 208 may be software executed by the CPUs 202. In this manner, only one copy of a full resolution image is maintained in a compressed format by thecontent storage 124. - The
image segmenting module 210 is then used to segment the image into multiple image segments, as represented by the four image segments 222(A), 222(B), 222(C), and 222(D). Each of these image segments 222(A)-(D) is provided in parallel to GPUs 142(1)-(4), respectively. In this example, the GPUs 142(1)-(4) are downsizing the image to a smaller resolution, as represented by the smaller image segments 224(A), 224(B), 224(C), and 224(D). The smaller image segments 224(A)-(D) are put back together to form a resealedimage 226, which can then be delivered to the client device. In one implementation, theGPUs 142 may put the image segments back together and the CPUs 202 may manage delivery of the resealedimage 226 to the client devices. - The use of GPUs at the
edge CDN 122 and the ability to process pieces of the image in parallel greatly increases the speed at which the resealed image can be delivered. This allows a single copy of the image to be stored in thepersistent content storage 124, while rapidly serving scaled versions of the image in response to user requests. -
FIG. 3 shows select components in thecontent delivery network 122 additional select components in the content delivery network similar toFIG. 2 , but further illustrates use of boundary markers to segment the image. In this example, theimage 222 is stored in full resolution in thecontent storage 124 and it may or may not be maintained in a compressed format.Boundary markers 302 are added to thefull resolution image 222 or thecompressed image 220 to allow segmentation of the image for parallel processing by the GPUs 142(1)-(4). Themarker module 134 of thecontent storage 124 adds the markers during ingestion of the images prior to storage in thedatastore 130. TheCDN 122 implements amarker reader module 304 to locate the markers and pass it to theimage segmentation module 210 for use in segmenting the image regardless of whether it is compressed or uncompressed. Through user of boundary markers in the compressed image, the image does not need to be decoded prior to processing by theGPUs 142. Rather, the image segments of the compressed image may be processed in parallel by theGPUs 142. -
FIGS. 4 and 5 show anexample process 400 executed by various devices in thesystem 100 to store a single version of a content item, such as an image, and scale the content item at the time of delivery. The process is illustrated as a collection of blocks in logical flow diagrams, which represent a sequence of operations, some or all of which can be implemented in hardware, software or a combination thereof. In the context of software, the blocks represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described should not be construed as a limitation. Any number of the described blocks can be combined in any order and/or in parallel to implement the process, or alternative processes, and not all of the blocks need be executed. For discussion purposes, the processes are described with reference to the architectures and environments described in the examples herein, although the processes may be implemented in a wide variety of other architectures or environments. - For purposes of discussion, certain acts of the processes are illustrated in columns beneath the devices or systems that perform these acts in the example implementation. For instance, acts performed by the original poster's
computer 106,cloud resources 102, andother user devices 152 are shown beneath their respective images. - At 402, a new image is posted for cloud-based storage. In the example architecture of
FIG. 1 , theuser 104 uses auser interface 108 to select and post an image via thecomputer 106. The image is transferred from thecomputer 106 over thenetwork 114 to thecloud resources 102. The uploadservers 120 receive the image and move it to thebackend content storage 124. - At 404, the
content storage 124 of thecloud resources 102 stores a single copy of the image, in full resolution, within persistent storage. With reference toFIG. 1 , this may be accomplished by storing thefull resolution image 112 in thedatastore 130. Optionally, at 406, the image may be compressed prior to storage. These may be accomplished, for example, by thecompression module 132 using any number of known compression algorithms. Additionally, at 408, the boundary markers may be added to the image prior to storage. For instance, markers may be added to define possible segmentations of the image for parallel processing. Themarker module 134 executing on thebackend servers 128 may be used to place these markers during ingestion of the image. - At 410, a request for the image is received from a user (e.g., user 1) via a client device (e.g., client device 1). The request is transmitted over the
network 154 to thecontent delivery network 122. At 412, the request is received at thecloud resources 102, and namely theCDN 122. - At 414, the display capabilities of the client device are ascertained. There are multiple ways to discern the display capabilities. In one approach, the request may include metadata describing the display capabilities or defining the size of the image need to fill an area of the screen. In another approach, a device
type identifier module 144 may be employed to ascertain the display capabilities of the client device by retrieving the display capabilities based on an identifier of the client device or any other clues that may be present in the request. - At 416, the full resolution image is retrieved from the persistent storage. The image may be in a compressed or uncompressed format. At 418, the image may be cached in a short-term cache. The
cache 146 is local to theCDN 122 and separate from the persistent storage, such asdatastore 130. In this manner, subsequent requests for the image may be handled judiciously without fetching the image again from thebackend content storage 124. The cached image may be subsequently terminated or deleted according to any type of protocols, such as time-based protocols, usage-based protocols, and so forth. - At 420, the image is resealed using one or more graphic processing units to form a resealed image at a resolution different from the full resolution, assuming the display capabilities do not support the image in the full resolution. As used herein, the display capabilities include both hardware capabilities (e.g., whether the display has sufficient pixel density to support high resolution images), software capabilities (e.g., size of the window or space allocated to display the image, such as a thumbnail, or larger location), or a combination of hardware and software capabilities. The resealing may include segmenting the image into multiple segments and processing the multiple segments in parallel with multiple GPUs. The resealing may also include decompressing the image if the image was retrieved in a compressed format.
- Furthermore, the GPUs may perform other image processing tasks. For instance, the GPUs may perform such tasks as cropping, adding boarders, modifying backgrounds, altering color, and so forth.
- At 422, the resealed image is served back to the requesting device. At 424, the resealed image is received and rendered on the requesting client device.
-
FIG. 5 continues theprocess 400 for subsequent requests of the image, which is being temporarily stored in the cache. At 502, a request for the image is received from another user (e.g., user 2) via a different or second client device (e.g., client device 2). The request is transmitted over thenetwork 154 to thecontent delivery network 122. At 504, the request is received at thecloud resources 102, and namely theCDN 122. - At 506, the display capabilities of the second client device are ascertained. At 508, the full resolution image is retrieved from the local cache at the
CDN 122, rather than fetching the image from thebackend content storage 124. In this way, the time to retrieve the image is reduced. At 510, the image is resealed using one or more GPUs to form yet another resealed image that might be at a resolution different from the full resolution or the first resolution served to the first client device. - At 512, the resealed image is served back to the requesting device. At 514, the resealed image is received and rendered on the requesting client device.
- The
process 400 inFIGS. 4 and 5 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions. Upon receiving a request for the image, theprocess 400 allows for resizing of the images on the fly using high-powered GPUs at the edge of the cloud resources. Subsequent requests for the same image may then be resized on the fly using the GPUs without even having to fetch the image from the datastore. This allows for reduced storage costs, while avoiding any notable increase in latency and in some cases reducing latency. - In the architecture described above, the image is stored once and resized in real-time by GPUs near the edge of the cloud services 102. The bandwidth within the cloud network (not shown) between the frontend servers and backend servers is typically very high relative to the bandwidth of the
distribution network 154 between the cloud resources and the client device. As a result, the real-time image processing is performed as close to the edge as possible, such as in theCDN 122. However, as bandwidth improves in thedistribution networks 154, the image processing may be pushed closer to the end user. Accordingly, in the architecture described below, the image is resealed after it is delivered to the client side over thenetwork 154, such as by the client itself or a more proximal/local computing device that is equipped with GPUs. -
FIG. 6 shows another example architecture of acomputing system 600 that includes cloud-based storage andcomputing resources 602 that receive content from, and serve content to, client devices of various users. Thecloud resources 602 are similar to thecloud resources 102 ofFIG. 1 , with the exception that thecontent delivery network 604implements servers 606 that are not specially modified with many GPUs. Instead, theCDN 604 retrieves thefull resolution image 112 from thebackend content storage 124 and serves thefull resolution image 112 over thenetwork 154 to one or more local resources. In the illustrated example, theclient device 608 may be equipped with itsown GPU 610 that rescales the image in real-time as the image is received. Alternatively, a local area computing device 612 (e.g., cable box, home-based server, entertainment device, etc.) may be equipped with aGPU 614 to rescale the image as appropriate for a local display. Once resealed, the computing device 612 may transfer the rescaled image to theclient device 608 via a wireless or wired connection. -
FIG. 7 shows anexample process 700 executed by various devices in thesystem 600 to store a single version of a content item, such as an image, and scale the content item after delivery to the customer. At 702, a request for the image is submitted by the user's device, such as thetablet 608. The request may be transmitted over thenetwork 154 to theCDN 604, which either fetches the full resolution image from thedatastore 130 or from thelocal cache 146 if previously cached. - At 704, the request is received at the cloud resources, namely the
CDN 604. TheCDN 604 retrieves the full resolution image either from thepersistent storage 130 or from thelocal cache 146, at 706. At 708, the full resolution image is served to over thedistribution network 154 to the client side. - At 710, the full resolution image is received by either the
client device 608 or a client-side computing device 612. Either or both of these devices are equipped with a GPU, such asGPUs - Accordingly, the
process 700 inFIG. 7 allows for a single copy of an image to be stored in a persistent datastore of the backend content storage, rather than dozens of copies at different resolutions. Upon receiving a request for the image, theprocess 700 transfers the full resolution image over the network to the client-side, where the image is subsequently resized using high-powered GPUs on the client side. This process allows for reduced storage costs, while avoiding any notable increase in latency. - It is further noted that aspects pertaining to image compression and use of boundary markers may be used in the
process 700 in a manner similar to that described above with respect toprocess 400. - Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claims
Claims (25)
1. A method comprising:
storing a single copy of an image in a first resolution within persistent storage without storing multiple copies of the image in different resolutions in the persistent storage;
receiving, from a client device, a request for the image;
ascertaining display capabilities of the client device;
retrieving the image, in the first resolution, from the persistent storage;
rescaling the image, using one or more graphic processing units, to form a rescaled image of a second resolution different from the first resolution in an event that the display capabilities do not support rendering of the image in the first resolution; and
serving the rescaled image in the second resolution.
2. The method as recited in claim 1 , wherein the first resolution of the image is full resolution and the second resolution of the rescaled image is less than full resolution.
3. The method as recited in claim 1 , wherein receiving a request for the image comprises receiving a request that includes at least one of indicia of the display capabilities of the client device or a size that the image is to rendered.
4. The method as recited in claim 1 , wherein receiving a request for the image comprises receiving a request that includes an identifier of the client device, and ascertaining the display capabilities of the client device comprises retrieving the display capabilities based on the identifier of the client device.
5. The method as recited in claim 1 , further comprising caching the image, in the first resolution, in a short-term cache separate from the persistent storage.
6. The method as recited in claim 5 , wherein the client device comprises a first client device having first display capabilities, and further comprising:
receiving, from a second client device having second display capabilities different than the first display capabilities, a request for the image;
ascertaining the second display capabilities of the second client device;
resealing the image from the short-term cache, using one or more graphic processing units, to form a resealed image of a third resolution different from the first resolution and the second resolution in an event that the second display capabilities do not support rendering of the image in the first resolution; and
serving the resealed image in the third resolution to the second client device.
7. The method as recited in claim 5 , further comprising deleting the image from the short-term cache.
8. The method as recited in claim 1 , wherein storing a single copy of an image comprises compressing the image and storing the image in compressed form, and the method further comprising decompressing the image following retrieval.
9. The method as recited in claim 1 , further comprising segmenting the image into multiple image segments and resealing the image segments in parallel using multiple graphic processing units.
10. The method as recited in claim 1 , further comprising:
adding boundary markers to the image to delineate segments of the image;
segmenting the image, using the boundary markers, into multiple image segments; and
resealing the image segments in parallel using multiple graphic processing units.
11. A method comprising:
storing a copy of an image in a first resolution within persistent storage without storing multiple copies of the image in different resolutions in the persistent storage;
receiving, from a client device, a request for the image;
retrieving the image, in the first resolution, from the persistent storage;
serving the image, in full resolution, to the client device where the client device is configured to rescale the image, using at least one graphic processing unit, to form a rescaled image of a second resolution different from the first resolution.
12. The method as recited in claim 11 , wherein the first resolution of the image is full resolution and the second resolution of the rescaled image is less than full resolution.
13. The method as recited in claim 11 , further comprising caching the image, in the first resolution, in a short-term cache separate from the persistent storage.
14. The method as recited in claim 13 , further comprising subsequently deleting the image from the short-term cache.
15. A cloud-based computing system comprising:
persistent content storage to store displayable content items, wherein at least some of the displayable content items are stored as single copies in a first format without secondary versions of the displayable content items being stored in the same or different formats; and
a content delivery network having multiple servers to communicate with the content storage, each of the multiple servers comprising multiple graphic processing units to process the displayable content items such that, upon receipt of a request from a client device for a displayable content item, the content delivery network being configured to ascertain rendering constraints of the client device and retrieve the displayable content item, in the first format, from the content storage, the content delivery network being further configured to transform the displayable content item, using the graphic processing units, to form a transformed displayable content item of a second format different from the first format, wherein the second format is supported by the display capabilities of the client device, and the content delivery network is configured to serve the transformed displayable content item in the second format to the client device.
16. The cloud-based computing system as recited in claim 15 , wherein the displayable content item comprises an image, the first format comprises full resolution, and the content delivery network is configured to rescale the image to a resolution that is different than full resolution.
17. The cloud-based computing system as recited in claim 15 , wherein the displayable content item is compressed prior to storage in the content storage.
18. The cloud-based computing system as recited in claim 15 , wherein the content delivery network further comprises a cache to temporarily store the displayable content item in the first format.
19. The cloud-based computing system as recited in claim 18 , wherein upon receipt of a second request for the content item from a second client device different than the first client device, the content delivery network is configured to ascertain display capabilities of the second client device and retrieve the displayable content item, in the first format, from the cache, the content delivery network being further configured to transform the displayable content item retrieved from the cache, using the graphic processing units, to form a second transformed displayable content item of a third format different from the first and second formats, wherein the third format is supported by the display capabilities of the second client device, and the content delivery network is configured to serve the second transformed displayable content item in the third format to the second client device.
20. The cloud-based computing system as recited in claim 15 , further comprising a computing unit configured to add boundary markers to the content item to delineate multiple segments of the content item, and wherein the content delivery network is configured to segment, using the boundary markers, the displayable content item into multiple content segments and rescale the content segments in parallel using the graphic processing units.
21. One or more computer-readable media maintaining instructions executable by one or more processors of a computing system to perform operations comprising:
storing a single copy of a displayable content item within persistent storage without storing multiple copies of the displayable content item in the persistent storage;
receiving, from a client device, a request for the displayable content item;
retrieving the displayable content item from the persistent storage;
altering the displayable content item in real-time to form a second version of the displayable content item that is in a format suitable for presentation on the client device; and
serving the second version of the displayable content item to the client device.
22. The computer-readable media as recited in claim 21 , further comprising instructions executable by the one or more processors of the computing system to perform one or more additional operations comprising caching the displayable content item, in the first format, in a short-term cache separate from the persistent storage.
23. The computer-readable media as recited in claim 22 , further comprising instructions executable by the one or more processors of the computing system to perform one or more additional operations comprising:
receiving, from a second client device having second display capabilities different than the first display capabilities, a request for the displayable content item;
altering the displayable content item in real-time to form a third version of the displayable content item that is in a format suitable for presentation on the second client device; and
serving the third version of the displayable content item to the second client device.
24. One or more computer-readable media maintaining instructions executable by one or more processors of a computing system to perform operations comprising:
storing a single copy of an image within persistent storage without storing multiple copies of the image in the persistent storage;
adding boundary markers to the image that define segments of the image;
receiving, from a client device, a request for the image;
retrieving the image from the persistent storage;
segmenting the image, using the boundary markers, into multiple image segments;
rescaling the image segments in parallel using multiple graphic processing units;
reforming the rescaled image segments to form a rescaled image; and
serving the rescaled image to the client device.
25. The computer-readable media as recited in claim 24 , further comprising instructions executable by the one or more processors of the computing system to perform one or more additional operations comprising storing the single copy of the image in a compressed form and decompressing the image after retrieving the image from the persistent storage.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/929,725 US20140267439A1 (en) | 2013-03-15 | 2013-06-27 | Image Delivery Architecture |
PCT/US2014/044676 WO2014210514A1 (en) | 2013-03-15 | 2014-06-27 | Image delivery architecture |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361799833P | 2013-03-15 | 2013-03-15 | |
US201361829992P | 2013-05-31 | 2013-05-31 | |
US13/929,725 US20140267439A1 (en) | 2013-03-15 | 2013-06-27 | Image Delivery Architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140267439A1 true US20140267439A1 (en) | 2014-09-18 |
Family
ID=51524720
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/907,802 Active 2034-07-15 US9696350B2 (en) | 2013-03-15 | 2013-05-31 | Non-linear control for voltage regulator |
US13/929,725 Abandoned US20140267439A1 (en) | 2013-03-15 | 2013-06-27 | Image Delivery Architecture |
US13/929,727 Expired - Fee Related US9046552B2 (en) | 2013-03-15 | 2013-06-27 | On-die trim-able passive components for high volume manufacturing |
US13/930,559 Active US8890737B2 (en) | 2013-03-15 | 2013-06-28 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US14/543,346 Active US9733282B2 (en) | 2013-03-15 | 2014-11-17 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US15/276,697 Active US10184961B2 (en) | 2013-03-15 | 2016-09-26 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US16/254,468 Active US10641799B2 (en) | 2013-03-15 | 2019-01-22 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US16/866,347 Active US11193961B2 (en) | 2013-03-15 | 2020-05-04 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/907,802 Active 2034-07-15 US9696350B2 (en) | 2013-03-15 | 2013-05-31 | Non-linear control for voltage regulator |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/929,727 Expired - Fee Related US9046552B2 (en) | 2013-03-15 | 2013-06-27 | On-die trim-able passive components for high volume manufacturing |
US13/930,559 Active US8890737B2 (en) | 2013-03-15 | 2013-06-28 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US14/543,346 Active US9733282B2 (en) | 2013-03-15 | 2014-11-17 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US15/276,697 Active US10184961B2 (en) | 2013-03-15 | 2016-09-26 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US16/254,468 Active US10641799B2 (en) | 2013-03-15 | 2019-01-22 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
US16/866,347 Active US11193961B2 (en) | 2013-03-15 | 2020-05-04 | Current balancing, current sensor, and phase balancing apparatus and method for a voltage regulator |
Country Status (5)
Country | Link |
---|---|
US (8) | US9696350B2 (en) |
KR (2) | KR101563422B1 (en) |
CN (5) | CN106921292B (en) |
TW (3) | TWI517544B (en) |
WO (1) | WO2014210514A1 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150154934A1 (en) * | 2013-12-02 | 2015-06-04 | Nvidia Corporation | Method and system for customizing optimal settings using end-user preferences |
US20150324088A1 (en) * | 2014-05-09 | 2015-11-12 | Lyve Minds, Inc. | Thumbnail image creation |
US20160163016A1 (en) * | 2014-12-09 | 2016-06-09 | Julia A. Gould | Thread dispatching for graphics processors |
US20170256023A1 (en) * | 2016-03-02 | 2017-09-07 | Alibaba Group Holding Limited | Solid state storage local image processing system and method |
US9846607B2 (en) | 2015-03-12 | 2017-12-19 | Nvidia Corporation | Method and system for associating crash reports with end user analytics |
US10008854B2 (en) | 2015-02-19 | 2018-06-26 | Enphase Energy, Inc. | Method and apparatus for time-domain droop control with integrated phasor current control |
US10331630B1 (en) | 2016-03-24 | 2019-06-25 | EMC IP Holding Company LLC | Systems and methods for file triggers in a converged compute and file system |
US10419537B1 (en) * | 2016-03-24 | 2019-09-17 | EMC IP Holding Company LLC | Architecture for a converged compute and file system within network-attached storage clusters |
US10474919B2 (en) | 2016-04-19 | 2019-11-12 | Patty's Gmbh | Method for determining and displaying products on an electronic display device |
US20210382934A1 (en) * | 2015-10-05 | 2021-12-09 | Pinterest, Inc. | Dynamic search control invocation and visual search |
US20220007296A1 (en) * | 2015-04-01 | 2022-01-06 | Ebay Inc. | Battery Charge Aware Communications |
US11290777B2 (en) * | 2017-06-09 | 2022-03-29 | Disney Enterprises, Inc. | High-speed parallel engine for processing file-based high-resolution images |
US11841735B2 (en) | 2017-09-22 | 2023-12-12 | Pinterest, Inc. | Object based image search |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9035625B2 (en) * | 2009-12-23 | 2015-05-19 | R2 Semiconductor | Common cascode routing bus for high-efficiency DC-to-DC conversion |
US9069034B2 (en) * | 2010-06-30 | 2015-06-30 | University Of Manitoba | Spintronic phase comparator permitting direct phase probing and mapping of electromagnetic signals |
JP6014357B2 (en) * | 2012-04-26 | 2016-10-25 | ルネサスエレクトロニクス株式会社 | Semiconductor device |
CN104885243B (en) * | 2012-06-14 | 2018-07-17 | 奥克兰大学服务有限公司 | Self-inductance measurement dielectric elastomeric body device |
US9154026B2 (en) | 2012-06-27 | 2015-10-06 | Intel Corporation | Bridge driver for a switching voltage regulator which is operable to soft-switch and hard-switch |
FR3001807B1 (en) * | 2013-02-07 | 2016-06-10 | Renault Sa | METHOD FOR DETERMINING THE AVERAGE VOLTAGE OF THE CELLS OF A BATTERY, IN PARTICULAR A HIGH VOLTAGE BATTERY FOR AN ELECTRIC VEHICLE |
US9696350B2 (en) * | 2013-03-15 | 2017-07-04 | Intel Corporation | Non-linear control for voltage regulator |
US9048851B2 (en) | 2013-03-15 | 2015-06-02 | Intel Corporation | Spread-spectrum apparatus for voltage regulator |
US8947281B1 (en) | 2013-03-15 | 2015-02-03 | Clariphy Communications, Inc. | Apparatus and methods for actively terminated digital-to-analog conversion |
US9667068B2 (en) * | 2013-12-18 | 2017-05-30 | Nvidia Corporation | System, method, and computer program product for a switch mode current balancing rail merge circuit |
US9246479B2 (en) * | 2014-01-20 | 2016-01-26 | Via Technologies, Inc. | Low-offset bandgap circuit and offset-cancelling circuit therein |
US9577525B2 (en) * | 2014-03-04 | 2017-02-21 | Maxim Integrated Products, Inc. | Adaptive dead time control |
US9891249B2 (en) * | 2014-05-28 | 2018-02-13 | Nxp B.V. | Broad-range current measurement using duty cycling |
US9720020B2 (en) * | 2014-05-28 | 2017-08-01 | Nxp B.V. | Broad-range current measurement using variable resistance |
KR102295182B1 (en) * | 2014-07-29 | 2021-09-01 | 삼성전자주식회사 | Dc-dc converting circuit and power management chip package |
US9798347B2 (en) * | 2014-10-30 | 2017-10-24 | Infineon Technologies Austria Ag | High speed tracking dual direction current sense system |
US9664713B2 (en) * | 2014-10-30 | 2017-05-30 | Infineon Technologies Austria Ag | High speed tracking dual direction current sense system |
US9680391B2 (en) | 2015-03-27 | 2017-06-13 | Qualcomm Incorporated | Multi-input scalable rectifier droop detector |
US9753510B2 (en) * | 2015-08-26 | 2017-09-05 | Intel Corporation | Apparatus and method to reduce power losses in an integrated voltage regulator |
CN106533150B (en) * | 2015-09-09 | 2018-10-09 | 力博特公司 | A kind of mutual inductor magnetic balance method and apparatus of multistate switch circuit |
US20170115329A1 (en) * | 2015-10-22 | 2017-04-27 | Memsic, Inc. | Scalable average current sensor system |
TWI550391B (en) * | 2015-10-23 | 2016-09-21 | 台達電子工業股份有限公司 | Integrated power module package structure |
US9712906B1 (en) * | 2016-02-22 | 2017-07-18 | Cirrus Logic, Inc. | Alternating current (AC) load identification technique using a search algorithm |
US10958414B2 (en) | 2016-02-23 | 2021-03-23 | Google Llc | Clock period randomization for defense against cryptographic attacks |
CN106199483B (en) * | 2016-06-13 | 2018-11-09 | 电子科技大学 | A kind of nonlinear error compensation method of digital multimeter |
JP2019169746A (en) * | 2016-07-05 | 2019-10-03 | 旭化成エレクトロニクス株式会社 | Da converter, da conversion method, adjusting unit, and adjustment method |
US10122392B2 (en) * | 2016-08-18 | 2018-11-06 | Advanced Micro Devices, Inc. | Active equalizing negative resistance amplifier for bi-directional bandwidth extension |
DE102016122089A1 (en) * | 2016-11-17 | 2018-05-17 | HELLA GmbH & Co. KGaA | Method for operating a polyphase DC-DC converter |
TWI607632B (en) | 2016-12-30 | 2017-12-01 | 立積電子股份有限公司 | Signal detector |
CN106842050A (en) * | 2017-01-24 | 2017-06-13 | 中国电力科学研究院 | A kind of battery temperature Forecasting Methodology and device |
CN106685226B (en) * | 2017-02-15 | 2019-05-21 | 华为技术有限公司 | A kind of Multiphase Parallel DCDC circuit and its chip structure |
CN108628383A (en) * | 2017-03-22 | 2018-10-09 | 瑞萨电子美国有限公司 | Combination temp monitoring and true different current senses in multi phase voltage regulator |
US10635124B2 (en) | 2017-04-11 | 2020-04-28 | Intel Corporation | Adaptive digital controller including linear and non-linear control mechanism |
US10120406B1 (en) * | 2017-04-27 | 2018-11-06 | Microchip Technology Incorporated | Adaptive common mode dimmer |
US10230236B2 (en) * | 2017-05-04 | 2019-03-12 | Thermo King Corporation | Method and system for feedback-based load control of a climate control system in transport |
US10418994B1 (en) * | 2017-07-12 | 2019-09-17 | Xilinx, Inc. | Circuit for and method of extending the bandwidth of a termination block |
KR102400105B1 (en) | 2017-07-25 | 2022-05-19 | 삼성전자주식회사 | Ripple Compensator, Data Driving Circuit and Semiconductor device having the same |
KR102476377B1 (en) * | 2017-09-18 | 2022-12-12 | 현대자동차주식회사 | System and method for voltage drop compensation control of power supply device |
US10088857B1 (en) | 2017-09-26 | 2018-10-02 | Apple Inc. | Highly granular voltage regulator |
CN107896092B (en) * | 2017-12-18 | 2021-04-23 | 长沙景嘉微电子股份有限公司 | Circuit for relaxation oscillator capable of realizing accurate frequency modulation |
CN108183596B (en) * | 2017-12-21 | 2020-08-25 | 成都芯源***有限公司 | DC converter and method thereof |
US10090751B1 (en) * | 2018-02-21 | 2018-10-02 | Ixys, Llc | Gate driver for switching converter having body diode power loss minimization |
US10461643B1 (en) | 2018-04-04 | 2019-10-29 | Nanohenry, Inc. | Composite embedded voltage regulator (CEVR) |
CN108539979B (en) * | 2018-05-02 | 2020-11-17 | 成都芯源***有限公司 | DC converter and voltage DC conversion method |
US11725985B2 (en) | 2018-05-03 | 2023-08-15 | Verity Instruments, Inc. | Signal conversion system for optical sensors |
US11527909B2 (en) | 2018-05-11 | 2022-12-13 | Assembled Products Corporation | Magnetic charging device |
US10371725B1 (en) | 2018-05-31 | 2019-08-06 | Xilinx, Inc. | Out-of-range voltage detection and protection |
CN108923650B (en) * | 2018-06-27 | 2021-05-18 | 成都芯源***有限公司 | Multiphase converter and control circuit and control method thereof |
US10541615B1 (en) | 2018-06-28 | 2020-01-21 | Intel Corporation | Device, method and system to mitigate a voltage overshoot event |
US10340790B1 (en) * | 2018-09-18 | 2019-07-02 | CoolStar Technology, Inc. | Integrated voltage correction using active bandpass clamp |
US10910946B2 (en) * | 2018-09-27 | 2021-02-02 | Intel Corporation | Self-tuning zero current detection circuit |
CN111065187B (en) * | 2018-10-17 | 2022-04-26 | 戴洛格半导体(英国)有限公司 | Current regulator |
US11201611B2 (en) | 2018-12-12 | 2021-12-14 | Intel Corporation | Duty cycle control circuitry for input/output (I/O) margin control |
US20200256914A1 (en) * | 2019-02-07 | 2020-08-13 | Nuvoton Technology Corporation | Slew Rate Programming in Automatic Test Equipment (ATE) |
TWI716817B (en) | 2019-02-19 | 2021-01-21 | 立積電子股份有限公司 | Power detector with all transistors being bipolar junction transistors |
US10928886B2 (en) | 2019-02-25 | 2021-02-23 | Intel Corporation | Frequency overshoot and voltage droop mitigation apparatus and method |
US11515792B2 (en) * | 2019-06-04 | 2022-11-29 | Renesas Electronics America Inc. | Current sharing scheme in current mode control for multiphase DC-DC converter |
US11532984B2 (en) | 2019-06-21 | 2022-12-20 | Intel Corporation | Voltage regulator circuit with parallel arrangement of discontinuous conduction mode voltage regulators |
US10976764B2 (en) | 2019-09-18 | 2021-04-13 | Intel Corporation | Differential to single-ended high bandwidth compensator |
US11867788B2 (en) | 2020-01-30 | 2024-01-09 | Renesas Electronics America Inc. | Method and system for full cycle error correction of inductor current measurement for switching regulators |
US11300986B2 (en) | 2020-02-25 | 2022-04-12 | Hamilton Sundstrand Corporation | Current balancing |
CN111342786B (en) * | 2020-04-21 | 2021-09-21 | 上海类比半导体技术有限公司 | Differential amplifier common mode rejection ratio and gain trimming circuit |
US11567551B2 (en) | 2020-07-28 | 2023-01-31 | Rohde & Schwarz Gmbh & Co. Kg | Adaptive power supply |
US20220198022A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Secure device power-up apparatus and method |
US20220233174A1 (en) * | 2021-01-28 | 2022-07-28 | Bfly Operations, Inc. | Ultrasound device circuitry including phase-locked loop circuitry and methods of operating the same |
US11658577B2 (en) | 2021-01-29 | 2023-05-23 | Qualcomm Incorporated | Power management integrated circuit with a field programmable array of voltage regulators |
US11761985B2 (en) | 2021-02-09 | 2023-09-19 | Analog Devices International Unlimited Company | Calibration using flipped sensor for highly dynamic system |
US11881774B2 (en) | 2021-03-12 | 2024-01-23 | Texas Instruments Incorporated | Switching converter control loop and dynamic reference voltage adjustment |
US20220357757A1 (en) * | 2021-05-05 | 2022-11-10 | Cirrus Logic International Semiconductor Ltd. | Circuitry for driving a load |
TWI801922B (en) | 2021-05-25 | 2023-05-11 | 香港商科奇芯有限公司 | Voltage regulator |
CN113452252B (en) * | 2021-06-28 | 2022-08-05 | 上海任威电子科技有限公司 | Serial-connection type multi-path common-ground output communication power supply and overcurrent detection and protection method thereof |
KR20230013681A (en) | 2021-07-16 | 2023-01-27 | 삼성전자주식회사 | Nonvolatile memory device |
US11682974B2 (en) | 2021-09-22 | 2023-06-20 | Alpha And Omega Semiconductor International Lp | Multi-phase switching regulator with variable gain phase current balancing using slope-compensated emulated phase current signals |
US20230188038A1 (en) * | 2021-12-09 | 2023-06-15 | Renesas Electronics America Inc. | Regulator booster |
TWI832649B (en) * | 2022-12-30 | 2024-02-11 | 宏碁股份有限公司 | Self-calibration contact-sensing device and electronic device using the same |
CN116483154B (en) * | 2023-06-25 | 2023-09-12 | 上海海栎创科技股份有限公司 | Low-delay reference output circuit and output method |
CN117060921A (en) * | 2023-08-15 | 2023-11-14 | 合芯科技(苏州)有限公司 | Differential voltage-controlled loop oscillator, frequency adjusting method and electronic circuit |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040263908A1 (en) * | 2003-06-27 | 2004-12-30 | Xerox Corporation | Raster image path architecture |
US20080021834A1 (en) * | 2006-07-19 | 2008-01-24 | Mdatalink, Llc | Medical Data Encryption For Communication Over A Vulnerable System |
US7451405B2 (en) * | 2004-09-15 | 2008-11-11 | Research In Motion Limited | Method for requesting and viewing a zoomed area of detail from an image attachment on a mobile communication device |
US8218900B1 (en) * | 2008-07-31 | 2012-07-10 | Adobe Systems Incorporated | Non-linear image scaling with seam energy |
US8532435B1 (en) * | 2009-08-18 | 2013-09-10 | Adobe Systems Incorporated | System and method for automatically adapting images |
US8745341B2 (en) * | 2008-01-15 | 2014-06-03 | Red Hat, Inc. | Web server cache pre-fetching |
Family Cites Families (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2754955B1 (en) | 1996-10-22 | 1998-12-24 | Sgs Thomson Microelectronics | DEVICE FOR LIMITING TRANSIENT VARIATIONS OF A SUPPLY VOLTAGE |
US5889392A (en) * | 1997-03-06 | 1999-03-30 | Maxim Integrated Products, Inc. | Switch-mode regulators and methods providing transient response speed-up |
US6108529A (en) * | 1998-02-01 | 2000-08-22 | Bae Systems Aerospace Electronics Inc. | Radio system including FET mixer device and square-wave drive switching circuit and method therefor |
US6166528A (en) | 1999-11-02 | 2000-12-26 | Fairchild Semiconductor Corporation | Lossless current sensing in buck converters working with low duty cycles and high clock frequencies |
US6574742B1 (en) * | 1999-11-12 | 2003-06-03 | Insite One, Llc | Method for storing and accessing digital medical images |
CN1138340C (en) * | 1999-11-18 | 2004-02-11 | 华为技术有限公司 | Current-type step gain controller circuit for digital technology |
DE10038372C2 (en) | 2000-08-07 | 2003-03-13 | Infineon Technologies Ag | Differential digital / analog converter |
US6577515B2 (en) | 2001-03-02 | 2003-06-10 | Advanced Micro Devices, Inc. | Asymmetric power supply including a fast response converter |
US6535071B2 (en) * | 2001-05-17 | 2003-03-18 | Micron Technology, Inc. | CMOS voltage controlled phase shift oscillator |
JP4810775B2 (en) | 2001-08-03 | 2011-11-09 | 日本テキサス・インスツルメンツ株式会社 | DC-DC converter |
US6441597B1 (en) * | 2001-10-31 | 2002-08-27 | Semtech Corporation | Method and apparatus for sensing output inductor current in a DC-to-DC power converter |
US6690589B2 (en) * | 2002-02-28 | 2004-02-10 | Valere Power, Inc. | Interleaved converter power factor correction method and apparatus |
TWI220022B (en) | 2002-05-27 | 2004-08-01 | Richtek Technology Corp | Current sensing apparatus and method |
US6728121B2 (en) * | 2002-05-31 | 2004-04-27 | Green Power Technologies Ltd. | Method and apparatus for active power factor correction with minimum input current distortion |
US6670794B1 (en) | 2002-07-12 | 2003-12-30 | Richtek Technology Corp. | Multi-phase DC-to-DC buck converter with multi-phase current balance and adjustable load regulation |
ITMI20021539A1 (en) | 2002-07-12 | 2004-01-12 | St Microelectronics Srl | DIGITAL CONTROLLER FOR SWITCHING DC-DC CONVERTERS |
US6642752B1 (en) * | 2002-09-20 | 2003-11-04 | Texas Instruments Incorporated | Broadband sample and hold circuit |
US7574653B2 (en) * | 2002-10-11 | 2009-08-11 | Microsoft Corporation | Adaptive image formatting control |
US6879138B2 (en) | 2002-10-18 | 2005-04-12 | Intel Corporation | Buck converter with transient suppression |
US6850045B2 (en) | 2003-04-29 | 2005-02-01 | Texas Instruments Incorporated | Multi-phase and multi-module power system with a current share bus |
JP4271534B2 (en) * | 2003-09-01 | 2009-06-03 | 株式会社リコー | DC power supply device, driving method thereof, and semiconductor integrated circuit device including DC power supply circuit |
US7239087B2 (en) * | 2003-12-16 | 2007-07-03 | Microsemi Corporation | Method and apparatus to drive LED arrays using time sharing technique |
TWI233996B (en) | 2004-03-30 | 2005-06-11 | Richtek Techohnology Corp | Current-sensing device applied to multi-phase DC-to-DC converter |
US7274181B2 (en) | 2004-06-25 | 2007-09-25 | Intel Corporation | Systems, multiphase power converters with droop-control circuitry and methods |
US7339440B2 (en) * | 2004-11-30 | 2008-03-04 | President And Fellows Of Harvard College | Nonlinear pulse oscillator methods and apparatus |
US7180274B2 (en) * | 2004-12-10 | 2007-02-20 | Aimtron Technology Corp. | Switching voltage regulator operating without a discontinuous mode |
DE602005025860D1 (en) * | 2005-07-19 | 2011-02-24 | St Microelectronics Srl | Non-linear digital control circuit and method for a DC-DC converter |
JP4546539B2 (en) * | 2005-10-17 | 2010-09-15 | パナソニック株式会社 | Current addition type DAC |
US7489117B2 (en) | 2005-10-31 | 2009-02-10 | Chil Semiconductor Corporation | Dynamic conversion circuit for a voltage regulator module |
KR101373956B1 (en) * | 2005-11-11 | 2014-03-12 | 엘앤드엘 엔지니어링 엘엘씨 | On-linear controller for switching power supply |
DE602006014994D1 (en) | 2005-12-08 | 2010-07-29 | Nxp Bv | High voltage switch with low voltage transformers |
US7521907B2 (en) | 2006-03-06 | 2009-04-21 | Enpirion, Inc. | Controller for a power converter and method of operating the same |
US7385453B2 (en) * | 2006-03-31 | 2008-06-10 | Silicon Laboratories Inc. | Precision oscillator having improved temperature coefficient control |
US7400191B2 (en) * | 2006-04-07 | 2008-07-15 | Manuel De Jesus Rodriguez | Switching power amplifier |
DE102006019681A1 (en) | 2006-04-27 | 2007-11-15 | Infineon Technologies Ag | Battery voltage controlling circuit arrangement for e.g. passenger car, has processing unit used for partial compensation of tolerances and/or temperature influences in signal and/or sensor arranged downstream to measuring device |
EP2178340B1 (en) * | 2006-06-02 | 2016-06-29 | Panasonic Corporation | Power Control Unit for High-Frequency Dielectric Heating |
US7615982B1 (en) * | 2006-07-26 | 2009-11-10 | Fairchild Semiconductor Corporation | Power converter able to rapidly respond to fast changes in load current |
US7436158B2 (en) | 2006-07-27 | 2008-10-14 | Richtek Technology Corp. | Low-gain current-mode voltage regulator |
US7936932B2 (en) * | 2006-08-24 | 2011-05-03 | Dell Products L.P. | Methods and apparatus for reducing storage size |
US7482793B2 (en) * | 2006-09-11 | 2009-01-27 | Micrel, Inc. | Ripple generation in buck regulator using fixed on-time control to enable the use of output capacitor having any ESR |
US7471121B2 (en) * | 2006-12-21 | 2008-12-30 | System General Corp. | Transistor drive circuit of power converter operating in a wide voltage range |
JP5167736B2 (en) | 2007-09-12 | 2013-03-21 | 株式会社リコー | Switching regulator |
CN201118434Y (en) * | 2007-11-09 | 2008-09-17 | 华北电力大学 | Dual PWM mixed cutting wave control circuit |
JP5303910B2 (en) * | 2007-11-20 | 2013-10-02 | 株式会社リコー | Switching regulator |
US7605609B1 (en) * | 2007-12-17 | 2009-10-20 | Lattice Semiconductor Corporation | Programmable level shifter |
JP4960216B2 (en) | 2007-12-28 | 2012-06-27 | ルネサスエレクトロニクス株式会社 | D / A converter circuit |
US7923974B2 (en) * | 2008-01-04 | 2011-04-12 | Chil Semiconductor Corporation | Modification of switch activation order in a power supply |
US20090240763A1 (en) * | 2008-03-24 | 2009-09-24 | Hones William G | Messaging device and system |
US7898233B2 (en) * | 2008-04-11 | 2011-03-01 | Renesas Electronics America Inc. | Multiphase voltage regulators and methods for voltage regulation |
US7863875B1 (en) * | 2008-04-23 | 2011-01-04 | Fairchild Semiconductor Corporation | Non-linear control techniques for improving transient response to load current step change |
US7764054B1 (en) * | 2008-05-21 | 2010-07-27 | Fairchild Semiconductor Corporation | Voltage regulator with current-mode dual-edge width modulation and non-linear control |
US8319486B2 (en) * | 2008-06-13 | 2012-11-27 | The Regents Of The University Of Colorado | Method, apparatus and system for extended switched-mode controller |
US7656200B2 (en) * | 2008-06-30 | 2010-02-02 | Intel Corporation | Multiple-phase, differential sampling and steering |
DE102008032556B3 (en) | 2008-07-10 | 2009-09-10 | Infineon Technologies Austria Ag | Power circuit breaker e.g. high side circuit breaker, has coupling transistors for dividing signal current into internal and external signal currents, and measuring device for determining whether evaluation device is coupled to breaker |
US8289732B2 (en) * | 2008-12-23 | 2012-10-16 | Iwatt Inc. | Controller for switching power converter driving BJT based on primary side adaptive digital control |
US8451632B2 (en) * | 2009-03-12 | 2013-05-28 | System General Corporation | Dual-Switches flyback power converter with self-excited supply to power the high-side driver |
TWI372506B (en) * | 2009-03-19 | 2012-09-11 | Richtek Technology Corp | Hybrid control circuit and method for a multi-phase dc to dc converter |
GB2469129B (en) * | 2009-04-04 | 2013-12-11 | Dyson Technology Ltd | Current controller for an electric machine |
US20120249550A1 (en) * | 2009-04-18 | 2012-10-04 | Lytro, Inc. | Selective Transmission of Image Data Based on Device Attributes |
JP5278817B2 (en) * | 2009-04-28 | 2013-09-04 | 富士電機株式会社 | Switching power supply |
US8749213B2 (en) * | 2009-06-09 | 2014-06-10 | Silergy Technology | Mixed mode control for switching regulator with fast transient responses |
US8970195B2 (en) * | 2009-06-10 | 2015-03-03 | Stmicroelectronics S.R.L. | Method for controlling an interleaving multiphase regulator and corresponding system |
JP5439694B2 (en) * | 2009-06-22 | 2014-03-12 | ルネサスエレクトロニクス株式会社 | Pulse width modulation circuit |
US8587274B2 (en) * | 2009-09-17 | 2013-11-19 | Linear Technology Corporation | Feedback control of a DC/DC power converter |
US8441242B2 (en) * | 2010-06-04 | 2013-05-14 | Fuji Electric Co., Ltd. | Digitally controlled integrated DC-DC converter with transient suppression |
US8797009B2 (en) | 2010-07-06 | 2014-08-05 | Csr Technology Inc. | Auto cascode buck voltage converter |
US8476880B2 (en) * | 2010-08-19 | 2013-07-02 | Texas Instruments Incorporated | System and method for reducing output voltage of a power regulator under light load |
US8143944B2 (en) * | 2010-08-23 | 2012-03-27 | Texas Instruments Incorporated | Method and apparatus for sensing a current for varying impedance loads |
US8680821B2 (en) * | 2010-12-22 | 2014-03-25 | Intel Corporation | Load adaptive voltage regulator |
US8692609B2 (en) | 2011-02-25 | 2014-04-08 | Peregrine Semiconductor Corporation | Systems and methods for current sensing |
US20120229107A1 (en) * | 2011-03-11 | 2012-09-13 | Intersil Americas Inc. | System and method for current sensing within a voltage regulator |
CN102185475B (en) * | 2011-03-11 | 2013-03-13 | 苏州易能微电子科技有限公司 | Quick nonlinear response control loop |
WO2012145383A2 (en) * | 2011-04-18 | 2012-10-26 | Innovolt, Inc. | Voltage sag corrector using a variable duty cycle boost converter |
TWI430551B (en) * | 2011-05-16 | 2014-03-11 | Realtek Semiconductor Corp | Multi-channel power supply and current balancing control method thereof |
CN202160110U (en) * | 2011-07-26 | 2012-03-07 | 立锜科技股份有限公司 | Multi-phase switching type power supply and droop signal generation circuit used therein |
US9166473B2 (en) * | 2011-08-31 | 2015-10-20 | Linear Technology Corporation | DC/DC power converter with feedback control operable in linear and non-linear modes |
CN102332823B (en) * | 2011-09-07 | 2014-07-09 | 复旦大学 | Adaptive turnon time control circuit suitable for high-frequency step-down voltage converter |
CN103248353B (en) * | 2012-02-07 | 2016-05-25 | 昂宝电子(上海)有限公司 | For the level shift system and method for voltage driver |
CN102545907B (en) * | 2012-02-27 | 2014-06-11 | 苏州科山微电子科技有限公司 | Digital-analogue converter |
TWM443985U (en) * | 2012-08-27 | 2012-12-21 | Richtek Technology Corp | Power supply circuit |
JP2014112988A (en) * | 2012-12-05 | 2014-06-19 | Sanken Electric Co Ltd | Switching power-supply device |
TWI495236B (en) | 2012-12-21 | 2015-08-01 | System General Corp | Controlling circuits and controlling methods |
US9696350B2 (en) | 2013-03-15 | 2017-07-04 | Intel Corporation | Non-linear control for voltage regulator |
JP2015097460A (en) | 2013-11-15 | 2015-05-21 | 株式会社東芝 | DC-DC converter |
US9461536B2 (en) * | 2013-11-27 | 2016-10-04 | Infineon Technologies Austria Ag | Digital controller with nested loops for switched mode power converter |
TWI528127B (en) * | 2014-02-21 | 2016-04-01 | Alpha & Omega Semiconductor | Regulator control method |
US9467043B2 (en) * | 2014-03-26 | 2016-10-11 | Micrel, Inc. | Buck DC-DC converter with fixed frequency |
US10348200B2 (en) * | 2014-06-02 | 2019-07-09 | Intel Corporation | Digital current sensor for on-die switching voltage regulator |
US9618539B2 (en) | 2015-05-28 | 2017-04-11 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Sensing current of a DC-DC converter |
-
2013
- 2013-05-31 US US13/907,802 patent/US9696350B2/en active Active
- 2013-06-27 US US13/929,725 patent/US20140267439A1/en not_active Abandoned
- 2013-06-27 US US13/929,727 patent/US9046552B2/en not_active Expired - Fee Related
- 2013-06-28 US US13/930,559 patent/US8890737B2/en active Active
-
2014
- 2014-03-13 TW TW103109085A patent/TWI517544B/en not_active IP Right Cessation
- 2014-03-13 TW TW105138269A patent/TWI636653B/en active
- 2014-03-13 TW TW104139429A patent/TWI586088B/en active
- 2014-03-14 CN CN201610880940.3A patent/CN106921292B/en active Active
- 2014-03-14 CN CN201410267109.1A patent/CN104113212B/en active Active
- 2014-03-14 CN CN201410267108.7A patent/CN104181967B/en active Active
- 2014-03-14 CN CN201610627326.6A patent/CN106200742B/en active Active
- 2014-03-14 KR KR1020140030644A patent/KR101563422B1/en active IP Right Grant
- 2014-03-14 CN CN201410095370.8A patent/CN104242876B/en active Active
- 2014-06-27 WO PCT/US2014/044676 patent/WO2014210514A1/en active Application Filing
- 2014-11-17 US US14/543,346 patent/US9733282B2/en active Active
-
2015
- 2015-05-26 KR KR1020150072956A patent/KR20150068343A/en not_active Application Discontinuation
-
2016
- 2016-09-26 US US15/276,697 patent/US10184961B2/en active Active
-
2019
- 2019-01-22 US US16/254,468 patent/US10641799B2/en active Active
-
2020
- 2020-05-04 US US16/866,347 patent/US11193961B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040263908A1 (en) * | 2003-06-27 | 2004-12-30 | Xerox Corporation | Raster image path architecture |
US7451405B2 (en) * | 2004-09-15 | 2008-11-11 | Research In Motion Limited | Method for requesting and viewing a zoomed area of detail from an image attachment on a mobile communication device |
US20080021834A1 (en) * | 2006-07-19 | 2008-01-24 | Mdatalink, Llc | Medical Data Encryption For Communication Over A Vulnerable System |
US8745341B2 (en) * | 2008-01-15 | 2014-06-03 | Red Hat, Inc. | Web server cache pre-fetching |
US8218900B1 (en) * | 2008-07-31 | 2012-07-10 | Adobe Systems Incorporated | Non-linear image scaling with seam energy |
US8532435B1 (en) * | 2009-08-18 | 2013-09-10 | Adobe Systems Incorporated | System and method for automatically adapting images |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10878770B2 (en) * | 2013-12-02 | 2020-12-29 | Nvidia Corporation | Method and system for customizing optimal settings using end-user preferences |
US11798514B2 (en) | 2013-12-02 | 2023-10-24 | Nvidia Corporation | Method and system for customizing optimal settings using end-user preferences |
US20150154934A1 (en) * | 2013-12-02 | 2015-06-04 | Nvidia Corporation | Method and system for customizing optimal settings using end-user preferences |
US20150324088A1 (en) * | 2014-05-09 | 2015-11-12 | Lyve Minds, Inc. | Thumbnail image creation |
US20160163016A1 (en) * | 2014-12-09 | 2016-06-09 | Julia A. Gould | Thread dispatching for graphics processors |
US9824414B2 (en) * | 2014-12-09 | 2017-11-21 | Intel Corporation | Thread dispatching for graphics processors |
US10332232B2 (en) * | 2014-12-09 | 2019-06-25 | Intel Corporation | Thread dispatching for graphics processors |
US10008854B2 (en) | 2015-02-19 | 2018-06-26 | Enphase Energy, Inc. | Method and apparatus for time-domain droop control with integrated phasor current control |
US11355936B2 (en) | 2015-02-19 | 2022-06-07 | Enphase Energy, Inc. | Method and apparatus for time-domain droop control with integrated phasor current control |
US10951037B2 (en) | 2015-02-19 | 2021-03-16 | Enphase Energy, Inc. | Method and apparatus for time-domain droop control with integrated phasor current control |
US9846607B2 (en) | 2015-03-12 | 2017-12-19 | Nvidia Corporation | Method and system for associating crash reports with end user analytics |
US20220007296A1 (en) * | 2015-04-01 | 2022-01-06 | Ebay Inc. | Battery Charge Aware Communications |
US11792733B2 (en) * | 2015-04-01 | 2023-10-17 | Ebay Inc. | Battery charge aware communications |
US20210382934A1 (en) * | 2015-10-05 | 2021-12-09 | Pinterest, Inc. | Dynamic search control invocation and visual search |
US10552936B2 (en) * | 2016-03-02 | 2020-02-04 | Alibaba Group Holding Limited | Solid state storage local image processing system and method |
US20170256023A1 (en) * | 2016-03-02 | 2017-09-07 | Alibaba Group Holding Limited | Solid state storage local image processing system and method |
US10419537B1 (en) * | 2016-03-24 | 2019-09-17 | EMC IP Holding Company LLC | Architecture for a converged compute and file system within network-attached storage clusters |
US10331630B1 (en) | 2016-03-24 | 2019-06-25 | EMC IP Holding Company LLC | Systems and methods for file triggers in a converged compute and file system |
US10474919B2 (en) | 2016-04-19 | 2019-11-12 | Patty's Gmbh | Method for determining and displaying products on an electronic display device |
US11290777B2 (en) * | 2017-06-09 | 2022-03-29 | Disney Enterprises, Inc. | High-speed parallel engine for processing file-based high-resolution images |
US11841735B2 (en) | 2017-09-22 | 2023-12-12 | Pinterest, Inc. | Object based image search |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140267439A1 (en) | Image Delivery Architecture | |
US11017018B2 (en) | Systems and methods of building and using an image catalog | |
US10885100B2 (en) | Thumbnail-based image sharing method and terminal | |
CN110458918B (en) | Method and device for outputting information | |
CA2719593C (en) | Dynamic composition for image transmission | |
US8122059B2 (en) | Cache system and method for generating uncached objects from cached and stored object components | |
US8446411B2 (en) | Adaptive image rendering and use of imposter | |
US8648858B1 (en) | Hybrid text and image based encoding | |
US8295617B2 (en) | Systems and methods for enhanced image encoding | |
US9785608B2 (en) | Predictive, multi-layer caching architectures | |
US8913068B1 (en) | Displaying video on a browser | |
US10929365B2 (en) | Automatic generation of animated previews for presenting document differences in enterprise messaging | |
US20090044128A1 (en) | Adaptive publishing of content | |
US8208762B1 (en) | Optimizing the performance of an image editing system in a client-server environment | |
US8234558B2 (en) | Adaptive artwork for bandwidth- and/or memory-limited devices | |
US8994748B2 (en) | Anchors for displaying image sprites, sub-regions and 3D images | |
WO2016100541A1 (en) | Network based static font subset management | |
CN110188216B (en) | Photo live broadcasting system with character recognition and method thereof | |
US20190114989A1 (en) | Systems and methods for image optimization | |
US20210110214A1 (en) | Selective image compression of an image stored on a device based on user preferences | |
US20170075886A1 (en) | Selecting digital content for inclusion in media presentations | |
US20210142540A1 (en) | Intelligent exporting of images using an image editing application | |
KR20140079418A (en) | Enabling immersive search engine home pages | |
WO2015154678A1 (en) | File processing method, device, and network system | |
EP3819782B1 (en) | Computing device, method of operation and computer program for a computing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: PINTEREST, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:JENKINS, JON;REEL/FRAME:030712/0846 Effective date: 20130626 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |