ScratchPad



Scratchpad memory (SPM), also known as scratchpad, scratchpad RAM or local store in computer terminology, is a high-speed internal memory used for temporary storage of calculations, data, and other work in progress. In reference to a microprocessor ('CPU'), scratchpad refers to a special high-speed memory circuit used to hold small items of data for rapid retrieval. It is similar to the usage and size of a scratchpad in life: a pad of paper for preliminary notes or sketches or writings, etc.

In some systems[a] it can be considered similar to the L1 cache in that it is the next closest memory to the ALU after the processor registers, with explicit instructions to move data to and from main memory, often using DMA-based data transfer.[1] In contrast to a system that uses caches, a system with scratchpads is a system with non-uniform memory access latencies, because the memory access latencies to the different scratchpads and the main memory vary. Another difference from a system that employs caches is that a scratchpad commonly does not contain a copy of data that is also stored in the main memory.

Scratchpads are employed for simplification of caching logic, and to guarantee a unit can work without main memory contention in a system employing multiple processors, especially in multiprocessor system-on-chip for embedded systems. They are mostly suited for storing temporary results (as it would be found in the CPU stack) that typically wouldn't need to always be committing to the main memory; however when fed by DMA, they can also be used in place of a cache for mirroring the state of slower main memory. The same issues of locality of reference apply in relation to efficiency of use; although some systems allow strided DMA to access rectangular data sets. Another difference is that scratchpads are explicitly manipulated by applications. They may be useful for realtime applications, where predictable timing is hindered by cache behaviour.

Scratchpads are not used in mainstream desktop processors where generality is required for legacy software to run from generation to generation, in which the available on-chip memory size may change. They are better implemented in embedded systems, special-purpose processors and game consoles, where chips are often manufactured as MPSoC, and where software is often tuned to one hardware configuration.

Examples of use[edit]

  • Fairchild F8 of 1975 contained 64 bytes of scratchpad.
  • Cyrix 6x86 is the only x86-compatible desktop processor to incorporate a dedicated scratchpad.
  • SuperH, used in Sega's consoles, could lock cachelines to an address outside of main memory for use as a scratchpad.
  • Sony's PS1's R3000 had a scratchpad instead of an L1 cache. It was possible to place the CPU stack here, an example of the temporary workspace usage.
  • Adapteva's Epiphany parallel coprocessor features local-stores for each core, connected by a network on a chip, with DMA possible between them and off-chip links (possibly to DRAM). The architecture is similar to Sony's Cell, except all cores can directly address each other's scratchpads, generating network messages from standard load/store instructions.
  • Sony's PS2Emotion Engine includes a 16 KB scratchpad, to and from which DMA transfers could be issued to its GS, and main memory.
  • Cell's SPEs are restricted purely to working in their 'local-store', relying on DMA for transfers from/to main memory and between local stores, much like a scratchpad. In this regard, additional benefit is derived from the lack of hardware to check and update coherence between multiple caches: the design takes advantage of the assumption that each processor's workspace is separate and private. It is expected this benefit will become more noticeable as the number of processors scales into the 'many-core' future. Yet because of the elimination of some hardware logics, the data and instructions of applications on SPEs must be managed through software if the whole task on SPE can not fit in local store.[2][3][4]
  • Many other processors allow L1 cache lines to be locked.
  • Most digital signal processors use a scratchpad. Many past 3D accelerators and game consoles (including the PS2) have used DSPs for vertex transformations. This differs from the stream based approach of modern GPUs which have more in common with a CPU cache's functions.
  • NVIDIA's 8800GPU running under CUDA provides 16 KB of scratchpad (NVIDIA calls it Shared Memory) per thread-bundle when being used for GPGPU tasks. Scratchpad also was used in later Fermi GPU (GeForce 400 Series).[5]
  • Ageia's PhysX chip includes a scratchpad RAM in a manner similar to the Cell; its theory states that a cache hierarchy is of less use than software managed physics and collision calculations. These memories are also banked and a switch manages transfers between them.
  • Intel's Knights Landing processor has a 16 GB MCDRAM that can be configured as either a cache, scratchpad memory, or divided into some cache and some scratchpad memory.
  • Movidius Myriad 2, a vision processing unit, organized as a multicore architecture with a large multiported shared scratchpad.
  • Graphcore has designed an AI accelerator based on scratchpad memories[6]

Scratchpad lets you easily create visual mock-ups from clippings you find on the web. Communicating your vision to designers or clients can be frustrating—it doesn’t have to be that way, that’s why we created Scratchpad. Scratchpad is the fastest way to update Salesforce, take sales notes, and stay on top of daily to-dos - all in one system. Designed specifically for account executives, Scratchpad reduces clicks, tab switching, and time spent on admin work to create more time to close deals.

ScratchPad is a a simple yet powerful notes-taking utility for Windows that resides in your system tray while not in use. ScratchPad is ideal for heads-down computer users who need to store. Scratchpad is a tool to help Amazon Associates send basic requests to the Product Advertising API. Follow the steps below and you can have a working request with sample code in minutes.

Alternatives[edit]

ScratchPad

Cache control vs scratchpads[edit]

Some architectures such as PowerPC attempt to avoid the need for cacheline locking or scratchpads through the use of cache control instructions. Marking an area of memory with 'Data Cache Block: Zero' (allocating a line but setting its contents to zero instead of loading from main memory) and discarding it after use ('Data Cache Block: Invalidate', signaling that main memory didn't receive any updated data) the cache is made to behave as a scratchpad. Generality is maintained in that these are hints and the underlying hardware will function correctly regardless of actual cache size.

Shared L2 vs Cell local stores[edit]

Regarding interprocessor communication in a multicore setup, there are similarities between the Cell's inter-localstore DMA and a shared L2 cache setup as in the Intel Core 2 Duo or the Xbox 360's custom powerPC: the L2 cache allows processors to share results without those results having to be committed to main memory. This can be an advantage where the working set for an algorithm encompasses the entirety of the L2 cache. However, when a program is written to take advantage of inter-localstore DMA, the Cell has the benefit of each-other-Local-Store serving the purpose of BOTH the private workspace for a single processor AND the point of sharing between processors; i.e., the other Local Stores are on a similar footing viewed from one processor as the shared L2 cache in a conventional chip. The tradeoff is that of memory wasted in buffering and programming complexity for synchronization, though this would be similar to precached pages in a conventional chip. Domains where using this capability is effective include:

  • Pipeline processing (where one achieves the same effect as increasing the L1 cache's size by splitting one job into smaller chunks)
  • Extending the working set, e.g., a sweet spot for a merge sort where the data fits within 8×256 KB
  • Shared code uploading, like loading a piece of code to one SPU, then copy it from there to the others to avoid hitting the main memory again

It would be possible for a conventional processor to gain similar advantages with cache-control instructions, for example, allowing the prefetching to the L1 bypassing the L2, or an eviction hint that signaled a transfer from L1 to L2 but not committing to main memory; however, at present no systems offer this capability in a usable form and such instructions in effect should mirror explicit transfer of data among cache areas used by each core.

See also[edit]

Notes[edit]

  1. ^Some older systems used a hidden part of main storage, referred to as bump storage, as scratchpad. In other systems, e.g., UNIVAC 1107, all addressable registers were held in scratchpad.

References[edit]

  1. ^Steinke, Stefan; Lars Wehmeyer; Bo-Sik Lee; Peter Marwedel (2002). 'Assigning Program and Data Objects to Scratchpad for Energy Reduction'(PDF). University of Dortmund. Retrieved 3 October 2013.CS1 maint: discouraged parameter (link): '3.2 Scratchpad model .. The scratchpad memory uses software to control the location assignment of data.'
  2. ^J. Lu, K. Bai, A. Shrivastava, 'SSDM: Smart Stack Data Management for Software Managed Multicores (SMMs)', Design Automation Conference (DAC), June 2–6, 2013
  3. ^K. Bai, A. Shrivastava, 'Automatic and Efficient Heap Data Management for Limited Local Memory Multicore Architectures', Design Automation and Test in Europe (DATE), 2013
  4. ^K. Bai, J. Lu, A. Shrivastava, B. Holton, 'CMSM: An Efficient and Effective Code Management for Software Managed Multicores', CODES+ISSS, 2013
  5. ^Patterson, David (September 30, 2009). 'The Top 10 Innovations in the New NVIDIA Fermi Architecture, and the Top 3 Next Challenges'(PDF). Parallel Computing Research Laboratory & NVIDIA. Retrieved 3 October 2013.CS1 maint: discouraged parameter (link)
  6. ^(PDF)https://www.graphcore.ai/hubfs/assets/pdf/Citadel%20Securities%20Technical%20Report%20-%20Dissecting%20the%20Graphcore%20IPU%20Architecture%20via%20Microbenchmarking%20Dec%202019.pdf.Missing or empty |title= (help)

External links[edit]

  • Rajeshwari Banakar, Scratchpad Memory : A Design Alternative for Cache. On-chip memory in Embedded Systems // CODES'02. May 6–8, 2002
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Scratchpad_memory&oldid=1008874748'

Over the course of DevTools development, we have added several experimental panels to try out new ideas. Not all of these have had wide adoption, and due to the cost of maintenance, seldom used panels are eventually removed.

We have created this list of deprecated or removed panels. This page documents the deprecated panels and the bugs that track their removal. Although these panels have been removed, you still have access to the old code, and there are alternative webextensions that you can try to get similar functionality.

When we deprecate a panel, we begin by getting feedback from the community to determine the impact of removing that panel. Once we have decided to remove the panel, we will provide a warning message, and finally, we will remove the panel from the codebase.

You may see a warning message, as in the following image, when trying to activate a deprecated panel:

In addition, if you open the panel for one of these tools, you will also see a warning message about its removal.

Scratchpad

Scratchpad is deprecated as of Firefox 70 (bug 1565380), and will be removed as of Firefox 72 (bug 1519103).

Description

Scratchpad provided an environment for experimenting with JavaScript code. You can write, run, and examine the result of code that interacts with the web page.

Alternatives

In Firefox 71+, you can write multi-line JavaScript code in the Web Console Editor Mode, making it similar to the Scratchpad. The Editor Mode can be triggered clicking on the icon on the right of the console input, or with Ctrl + B (Cmd + B on macOS)

When in Editor Mode, the Enter key adds a new line in the input, and you can evaluate the expression using Ctrl + Enter (Cmd + Enter on macOS).

When evaluating, the input isn't cleared, which makes it possible to quickly iterate over a snippet of code.

Scratchpad C#

The results are displayed in the console output, to the right of the input, providing immediate feedback. Unlike in Scratchpad, errors are properly displayed in the output with an expandable stacktrace, making it easier to debug the code you're currently writing.

Scratchpad Salesforce

Starting Firefox 72, you can import a Javascript file content in the console input with Ctrl + O (Cmd + O on macOS), as well as saving the console input content to a file using Ctrl + S (Cmd + S on macOS).

WebIDE and Connect page

WebIDE was deprecated as of Firefox 69

Disabled as of Firefox 70 (bug 1539451).

Removed as of Firefox 71 (bug 1539462).

Description

WebIDE allowed you to connect the Firefox Developer Tools to remote browsers, such as Firefox for Android. It was also intended to support application development for Firefox OS.

Alternatives

Remote debugging is available in about:debugging as of Firefox 68. Features not ported to about:debugging are: WiFi debugging for Firefox for Android, application development. Features that are planned but not ported yet: remote browser screenshots and edit remote browser configuration. More details on the mailing-list thread.

Canvas debugger

Bugzilla issue: bug 1403938

Removed as of Firefox 67

Description

Canvas Debugger allowed users to inspect the canvas element and see how frequently a given function is called. It was deprecated due to lack of use.

We do not have dedicated documentation for the Canvas Debugger.

Alternatives

Spector.js is a WebExtension that can provide these features with 3D contexts.

Web Audio editor

Bugzilla issue: bug 1403944

Removed as of Firefox 67

Description

The Web Audio Editor allowed you to examine an audio context constructed in the page and provided a visualization of its graph. This gave a high-level view of its operation, and enabled you to ensure that all the nodes are connected in the way you expect. It was possible to edit the AudioParam properties for each node in the graph. Some non-AudioParam properties, like an OscillatorNode's type property, were displayed and editable as well. It was deprecated due to lack of use.

Scratchpad Wiki

More details about the Web Audio Editor

Alternatives

Alternatives include AudioN and https://github.com/spite/WebAudioExtension web extensions.

Shader editor

Bugzilla issue: bug 1342237

Scratchpad

Removed as of Firefox 67

Description

The Shader Editor allowed users to examine and edit the source of the WebGL vertex and fragment shaders. It was deprecated due to low usage and maintenance costs.

More details about the Shader Editor

Alternatives

Scratchpad Stock Symbol

An alternative to this panel is this extension: https://github.com/spite/ShaderEditorExtension, or Spector.js also supports a Shader Editor that requires a library to use a shader reloader hook. Currently only the Babylon library does.