memo function


(Or "memoised function") A function that remembers which arguments it has been called with and the result returned and, if called with the same arguments again, returns the result from its memory rather than recalculating it.

Memo functions were invented by Professor Donald Michie of Edinburgh University. The idea was further developed by Robin Popplestone in his Pop2 language long before it was ever worked into LISP.

This same principle is found at the hardware level in computer architectures which use a cache to store recently accessed memory locations.

A Common Lisp package by Marty Hall <[email protected]>

["'Memo' functions: and machine learning", Donald Michie, Nature, 218, 19-22, 1968].

Last updated: 2002-07-02


memo function

memoised function

memo function


memo function

memoized function

memo function



These days, usually used synonymously with Random Access Memory or Read-Only Memory, but in the general sense it can be any device that can hold data in machine-readable format.

Last updated: 1996-05-25

memory address space


1. Any part of a processor's address space that is occupied by memory.

2. The range of addresses seen by a memory device relative to the base address at which it is mapped into the processor's address space.

Last updated: 1999-11-01

memory dump

<programming, operating system, jargon>

(Or "core dump") A file on hard disk (traditionally called "core") containing a copy of the contents of a process's memory, produced when a process is aborted by certain kinds of internal error or signal.

Debuggers like adb and gdb can load the dump file and display the information it contains about the state of the running program. This can be related to the program code, both object code and, in a source-level debugger, the source code. Information includes the contents of registers, the call stack and all other program data.

Last updated: 2007-05-09

memory farts

<jargon, humour>

The flatulent sounds that some MS-DOS box BIOSes (most notably AMI's) make when checking memory at boot time.

[Jargon File]

Last updated: 1994-11-02

memory leak


A leak in a program's dynamic store allocation logic that causes it to fail to reclaim memory in the heap after it has finished using it, eventually causing the program to fail due to lack of memory.

These problems were severe on older machines with small, fixed-size address spaces, and special "leak detection" tools were written to diagnose them.

The introduction of virtual memory made memory leaks a less serious problem, although if you run out of virtual memory, it means you've got a *real* leak!

See aliasing bug.

[Jargon File]

Last updated: 2003-10-07

memory location


A byte, word or other small unit of storage space in a computer's main memory that is identified by its starting address (and size).

Last updated: 1999-04-19

memory management

<memory management, storage>

A collection of techniques for providing sufficient memory to one or more processes in a computer system, especially when the system does not have enough memory to satisfy all processes' requirements simultaneously. Techniques include swapping, paging and virtual memory. Memory management is usually performed mostly by a hardware memory management unit.

Last updated: 1995-01-23

Memory Management Unit

<hardware, memory management>

(MMU, "Paged Memory Management Unit", PMMU) A hardware device or circuit that supports virtual memory and paging by translating virtual addresses into physical addresses.

The virtual address space (the range of addresses used by the processor) is divided into pages, whose size is 2^N, usually a few kilobytes. The bottom N bits of the address (the offset within a page) are left unchanged. The upper address bits are the (virtual) page number. The MMU contains a page table which is indexed (possibly associatively) by the page number. Each page table entry (PTE) gives the physical page number corresponding to the virtual one. This is combined with the page offset to give the complete physical address.

A PTE may also include information about whether the page has been written to, when it was last used (for a least recently used replacement algorithm), what kind of processes (user mode, supervisor mode) may read and write it, and whether it should be cached.

It is possible that no physical memory (RAM) has been allocated to a given virtual page, in which case the MMU will signal a "page fault" to the CPU. The operating system will then try to find a spare page of RAM and set up a new PTE to map it to the requested virtual address. If no RAM is free it may be necessary to choose an existing page, using some replacement algorithm, and save it to disk (this is known as "paging"). There may also be a shortage of PTEs, in which case the OS will have to free one for the new mapping.

In a multitasking system all processes compete for the use of memory and of the MMU. Some memory management architectures allow each process to have its own area or configuration of the page table, with a mechanism to switch between different mappings on a process switch. This means that all processes can have the same virtual address space rather than require load-time relocation.

An MMU also solves the problem of fragmentation of memory. After blocks of memory have been allocated and freed, the free memory may become fragmented (discontinuous) so that the largest contiguous block of free memory may be much smaller than the total amount. With virtual memory, a contiguous range of virtual addresses can be mapped to several non-contiguous blocks of physical memory.

In early designs memory management was performed by a separate integrated circuit such as the MC 68851 used with the Motorola 68020 CPU in the Macintosh II or the Z8015 used with the Zilog Z80 family of processors. Later CPUs such as the Motorola 68030 and the ZILOG Z280 have MMUs on the same IC as the CPU.

Last updated: 1999-05-24

memory mapped I/O


The use of the same instructions and bus to communicate with both main memory and input/output devices. This is in contrast to processors that have a separate I/O bus and special instructions to access it.

The I/O devices are addressed at certain reserved address ranges on the main memory bus. These addresses cannot therefore be used for RAM. Motorola and Mostec architectures, among others, use memory mapped I/O.

Video cards and other cards with on-board memory might be accessed in this way though the term applies not just to devices containing memory but to any device connected to the memory bus. Accessing the devices usually consists of reading and writing certain built-in registers though sometimes the mere presence of a particular address can trigger the device.

Last updated: 1997-04-14

memory protection

<memory management>

A system to prevent one process corrupting the memory (or other resources) of any other, including the operating system. Memory protection usually relies on a combination of hardware (a memory management unit) and software to allocate memory to processes and handle exceptions.

The effectiveness of memory protection varies from one operating system to another. In most versions of Unix it is almost impossible to corrupt another process' memory, except in some archaic implementations and Lunix (not Linux!). Under Microsoft Windows (version? hardware?) any 16 bit application(?) can circumvent the memory protection, often leading to one or more GPFs. Currently (April 1996) neither Microsoft Windows 3.1, Windows 95, nor Mac OS offer memory protection. Windows NT has it, and Mac OS System 8 will offer a form of memory protection.

[MS DOS EMM386 relevant?]

Last updated: 1996-09-10

memory smash


A Xerox PARC term for writing to the location addressed by a dangling pointer.

[Jargon File]

Last updated: 1994-11-02

Memory Type Range Registers

<architecture, video>

(MTRR) Registers in the Pentium Pro and Pentium II processors that can be used to specify a strategy for communication with the external memory and caches for a number of physical address ranges.

Strategies include write-through, write-back, or uncached(?). Such control is useful where the memory is located on a device and is accessed via some kind of device bus, e.g. a PCI or AGP graphics card, where caching would be of no benefit.

Last updated: 1999-07-02

Nearby terms:

memeticsMemexmemo functionmemoisationmemoised functionmemoization

Try this search on Wikipedia, OneLook, Google