|Publication number||US5548746 A|
|Application number||US 08/158,059|
|Publication date||Aug 20, 1996|
|Filing date||Nov 12, 1993|
|Priority date||Nov 12, 1993|
|Also published as||EP0653709A1|
|Publication number||08158059, 158059, US 5548746 A, US 5548746A, US-A-5548746, US5548746 A, US5548746A|
|Inventors||Gary D. Carpenter, Mark E. Dean, Marc R. Faucher, James C. Peterson, Howard C. Tanner|
|Original Assignee||International Business Machines Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (40), Non-Patent Citations (6), Referenced by (26), Classifications (19), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention relates generally to computer architectures. More particularly, the present invention is directed to systems and methods for protecting address space through controlled mapping and the address protection resources in a processor.
Conventionally available personal computers do not provide resources by which an operating system can protect designated address space. This lack of selective protection exposes systems having directly mapped input/output (I/O) devices to unintended or malicious code initiated read or write operations. As the number of I/O devices increases, and with multitasking systems and network environments, the importance of protecting address space becomes a subject of greater concern.
Some advanced workstations and computer systems employ RAM based techniques to control access into I/O address space. The prevailing approach involves the use of a table in memory which is consulted to determine whether the code seeking access to the specified address space has the requisite authority. This approach provides protection to the I/O address space, but is costly in terms of memory and is slow in speed as a consequence of the comparisons that must be performed.
Advanced processors, such as the PowerPC 601 (trademark of IBM Corporation) RISC processor available from IBM Corporation provide inherent memory protection resources. For example, in the case of the PowerPC 601 processor, the memory management unit provides selectively enabled protection to the processor address space enforceable at a block or page level. The access protection is selectable in varying options including read/write operation or user/supervisor levels. The details of the capabilities are described in the PowerPC 601 RISC Microprocessor Users Manual MPC 601UM/AD. However, as noted above, the protection is invocable at the aforementioned block or page level.
The distribution of address space for computer system level functions such as I/O are in most cases contiguous. Given the high speed of contemporary processors, the I/O devices, memory and other peripherals within the processor address space are physically attached to buses which are distinct from, but coupled by interface to, the bus upon which the processor itself resides. Of those system type buses conventionally in use, the Industry Standard Architecture (ISA) or Extended Industry Standard Architecture (EISA) are the best known. Another well known system level bus for connecting I/O devices is the Microchannel bus (trademark of IBM Corporation). A relatively new bus architecture which has drawn significant attention is known as the Peripheral Component Interconnect (PCI) bus, with the design details being defined in the PCI Local Bus Specification as distributed by the PCI Special Interest Group. Given the tremendous span in performance difference between the processor bus and the ISA or EISA buses used for I/O devices, the PCI bus has proven to be a valuable intermediate performance level bus for contemporary computer architectures.
Irrespective of the bus architecture selected for the I/O devices, there remains a need for selectively controlling access to segments from within the band of contiguous PCI, ISA or EISA address space assigned to I/O devices. The protection should provide operating system selectivity by I/O segments while minimizing comparison delays of the like previously used to protect I/O address space.
The present invention provides systems and methods for protecting computer address space using page or block access protection resources of advanced processors. In one form, the invention is directed to a computer address space protection system comprising a processor means for selectively inhibiting access to bands of processor address space and means for translating non-contiguous segments of processor address space to a contiguous band of system bus address space. In another form, the invention relates to a method of protecting a band of system address space in a computer, comprising the steps of operating a processor with processor address space in a page or block protective mode, and translating non-contiguous segments of the processor address space to a band of system address space.
According to a preferred embodiment of the invention, I/O device (port) addresses are assigned (memory mapped) to individual memory pages of a processor having access protection by page. Processor address space is selectively protected by page using operating system software. Since the processor manages the program instructions, access protection of processor address space pages correspondingly protects I/O address space which is mapped to the protected processor pages at the speed of the processor. Preferably, the contiguous I/O address space is segmented and distributed in non-contiguous portions to the low addresses of successive pages within the processor address space. Thereby, a mapped protection of I/O address space by segment is defined and initiated using processor page protection.
These and other features of the invention will be more clearly understood and appreciated upon considering the detailed description which follows hereinafter.
FIG. 1 is a schematic diagram depicting an address translation between non-contiguous processor address space and contiguous I/O address space.
FIG. 2 schematically illustrates the address mapping by bit position.
FIG. 3 schematically illustrates port address conversion.
Fig. 4 is a schematic block diagram of a system for selectively translating processor page protected addresses.
FIG. 5 schematically represents timing signals for the operation of the system in FIG. 4.
The present invention as preferably embodied is directed to the selective and individualized protection of segments from within a contiguous I/O address space as exists on a PCI bus using page or block level processor address space access protection as provided in a PowerPC 601 processor or the like. This system and method permits high speed addressing, in that comparisons to tables of protected memory addresses are avoided, while using resource inherent in the processor. Individual segments of the normally contiguous I/O address space are protected with the enablement of individual page protection in the processor. The segments are mapped to individual pages of the processor address space.
The concept underlying the present invention is depicted by preferred embodiment in FIG. 1. As illustrated in the figure, the I/O addresses, generally at 1, extend in a contiguous band from 0 to 64K bytes of the PCI/System bus address space. To a large extent this is dictated by the fact that the commonly used ISA and EISA buses require 64K of contiguous I/O address space. Mapping according to past practice routinely placed the 64K as a Contiguous block into a slot of the processor bus address space, for example ranging from 2G to 2G+64K. In contrast, the present invention segments the I/O address space into 32 byte increments and maps those increments via translator 3 into respective lower 32 byte segments of multiple 4K pages from within the processor bus address space extending from 2G to 2G+8M of the 32 bit address range available, shown generally at 4. Though only the lower 32 byes of each addressable processor bus page are used, the page access protection mechanism provided in the processor is now directly mappable to a 32 byte increment of I/O addresses. Thereby, the I/O address band of contiguous segments on the PCI bus is mapped to a band of non-contiguous segments of processor bus addresses to utilize access protection available at the processor level by I/O address segment. Translator 3 preferably includes control line 5 for switching between contiguous and non-contiguous mapping of I/O address space depending on the computer system need for access protection.
FIG. 2 depicts the details of the address mapping performed by block 3 (FIG. 1) as preferably implemented between the PowerPC 601 processor bus addresses and the PCI/system bus addresses, each bus having 32 bits, and the final ISA bus used for I/O devices, having only a 16 bit address space.
FIG. 3 illustrates a use of the address mapping to assign protection attributes to 32 byte groups of I/O ports on an ISA bus. In the example, ISA port addresses 0000 through 0001F are translated or mapped to processor addresses 8000 0000 to 8000 001F. The processor addresses 8000 0020 to 8000 0FFF are unused. The ISA I/O port address 0020 starts the next 4K page at the processor address 8000 1000.
FIG. 4 schematically depicts by functional block diagram an embodiment for using page access protection in a processor to protect individual segments within a contiguous I/O address space on a PCI type system bus. PCI control logic 6 represents system functions which create the signals defined by the PCI bus specification. The send Data signals and Receive Data signals are not PCI standard signals, but rather represent functional states initiated by the 601 processor. The only signal special to the present embodiment, is ADD-TIME, a signal which is active high during the first clock after FRAME# activates to indicate that address information should be placed on the PCI-A/D lines. When the processor wants to transmit data to the I/O system, a Send Data signal is transmitted to PCI control logic 6. On the other hand, when the processor wants to receive data from the I/O bus, a Receive Data signal is transmitted to PCI control logic 6. Responsive to the signals, PCI logic 6 generates the earlier noted ADD-TIME signal as defined by the timing diagram in FIG. 5.
The address subject to translation as provided in FIGS. 1 and 2 is received from the 601 processor at input 7. Decoder 8 determines the class or type of the address, distinguishing between an I/O address, a memory address or a configuration address. If decoder 8 detects an I/O address, that information is conveyed to PCI control logic block 6 and multiplexor block 9. Responsive to such I/O address detection, PCI control logic generates control byte enable (CBE) signals to indicate the type of cycle in conventional PCI format to indicate the onset of I/O, memory or configuration cycles. Address translator 11 provides the contiguous to non-contiguous by page translation functionally described with reference to FIGS. 1 and 2. Multiplexor 9 passes the access protected and non-contiguous addresses translated by block 11 when addressing I/O and contiguous translated addresses from translator 12 when not addressing I/O.
The address generated by the 601 processor, either contiguous (for non-protected operations) or non-contiguous (for protected I/O operations), serves as one input to multiplexor 13. The other input to multiplexor 13 is the data which is to be impressed on the PCI bus lines PCI-A/D when the cycle is defined by processor 601 to be a write cycle to the PCI bus. Note that the PCI bus is bi-directional and that it carries both address and data information. The ADD-TIME signal controlling multiplexor 13 is active during the time that an address is to be impressed on the PCI-A/D bus, otherwise data is passed by multiplexor 13. The bi-directional character of the PCI buses is evidenced by by the presence of oppositely direct amplifiers 14 and 16. Enable signal 17 is timed by logic (not shown) to enable the passage of address or data to the PCI-A/D lines as defined in the PCI standard.
The functions provided by the elements in FIG. 4 permit contiguous or non-contiguous translation between processor bus address space and PCI/system bus address space, with a non-contiguous translation providing I/O address space access protection through the page access protection inherent in conventional processors. The concepts however are broader, in that they encompass address space translations between a band in processor address space and a band in a system bus address space, where segments of the band in the system bus address space are non-contiguously proportioned over the band in the processor address space consistent with access protection afforded within the band of the processor address space.
Though the invention has been described and illustrated by way of a specific embodiment, the systems and methods encompassed by the invention should be interpreted in keeping with the breadth of the claims set forth hereinafter.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4035779 *||Apr 30, 1976||Jul 12, 1977||International Business Machines Corporation||Supervisor address key control system|
|US4037207 *||Apr 30, 1976||Jul 19, 1977||International Business Machines Corporation||System for controlling address keys under interrupt conditions|
|US4037214 *||Apr 30, 1976||Jul 19, 1977||International Business Machines Corporation||Key register controlled accessing system|
|US4037215 *||Apr 30, 1976||Jul 19, 1977||International Business Machines Corporation||Key controlled address relocation translation system|
|US4038645 *||Apr 30, 1976||Jul 26, 1977||International Business Machines Corporation||Non-translatable storage protection control system|
|US4042913 *||Apr 30, 1976||Aug 16, 1977||International Business Machines Corporation||Address key register load/store instruction system|
|US4050060 *||Apr 30, 1976||Sep 20, 1977||International Business Machines Corporation||Equate operand address space control system|
|US4285040 *||Jan 8, 1980||Aug 18, 1981||Sperry Corporation||Dual mode virtual-to-real address translation mechanism|
|US4315310 *||Sep 28, 1979||Feb 9, 1982||Intel Corporation||Input/output data processing system|
|US4340932 *||May 17, 1978||Jul 20, 1982||Harris Corporation||Dual mapping memory expansion unit|
|US4355355 *||Mar 19, 1980||Oct 19, 1982||International Business Machines Corp.||Address generating mechanism for multiple virtual spaces|
|US4407016 *||Feb 18, 1981||Sep 27, 1983||Intel Corporation||Microprocessor providing an interface between a peripheral subsystem and an object-oriented data processor|
|US4446517 *||Jun 2, 1981||May 1, 1984||Hitachi, Ltd.||Microprogram memory with page addressing and address decode in memory|
|US4649471 *||Mar 1, 1983||Mar 10, 1987||Thomson Components-Mostek Corporation||Address-controlled automatic bus arbitration and address modification|
|US4677544 *||Dec 21, 1984||Jun 30, 1987||Nec Corporation||Device for controlling access to a computer memory|
|US4677546 *||Aug 17, 1984||Jun 30, 1987||Signetics||Guarded regions for controlling memory access|
|US4736290 *||Jun 13, 1986||Apr 5, 1988||International Business Machines Corporation||Microprocessors|
|US4761736 *||Jan 2, 1986||Aug 2, 1988||Commodore Business Machines, Inc.||Memory management unit for addressing an expanded memory in groups of non-contiguous blocks|
|US4761737 *||Jan 16, 1986||Aug 2, 1988||International Business Machines Corporation||Method to automatically increase the segment size of unix files in a page segmented virtual memory data processing system|
|US4797853 *||Nov 15, 1985||Jan 10, 1989||Unisys Corporation||Direct memory access controller for improved system security, memory to memory transfers, and interrupt processing|
|US4809217 *||Oct 31, 1985||Feb 28, 1989||Allen-Bradley Company, Inc.||Remote I/O port for transfer of I/O data in a programmable controller|
|US4843541 *||Jul 29, 1987||Jun 27, 1989||International Business Machines Corporation||Logical resource partitioning of a data processing system|
|US4847750 *||Feb 13, 1986||Jul 11, 1989||Intelligent Instrumentation, Inc.||Peripheral DMA controller for data acquisition system|
|US4849875 *||Aug 10, 1987||Jul 18, 1989||Tandon Corporation||Computer address modification system with optional DMA paging|
|US4864532 *||Sep 21, 1987||Sep 5, 1989||Unisys Corporation||Small computer systems interface--data link processor|
|US4926322 *||Aug 3, 1987||May 15, 1990||Compag Computer Corporation||Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management|
|US4942541 *||Jan 22, 1988||Jul 17, 1990||Oms, Inc.||Patchification system|
|US5023773 *||Feb 10, 1988||Jun 11, 1991||International Business Machines Corporation||Authorization for selective program access to data in multiple address spaces|
|US5083259 *||May 6, 1991||Jan 21, 1992||Xycom, Inc.||Computer bus interconnection device|
|US5091846 *||Oct 30, 1989||Feb 25, 1992||Intergraph Corporation||Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency|
|US5253308 *||Jun 21, 1989||Oct 12, 1993||Amber Engineering, Inc.||Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing|
|US5280579 *||Sep 28, 1990||Jan 18, 1994||Texas Instruments Incorporated||Memory mapped interface between host computer and graphics system|
|US5293593 *||Oct 11, 1990||Mar 8, 1994||Hewlett-Packard Company||Method and apparatus for the mapping of physically non-contiguous memory fragments to be linearly addressable|
|US5341494 *||Dec 10, 1993||Aug 23, 1994||Compaq Computer Corporation||Memory accessing system with an interface and memory selection unit utilizing write protect and strobe signals|
|US5381537 *||Dec 6, 1991||Jan 10, 1995||International Business Machines Corporation||Large logical addressing method and means|
|EP0585117A1 *||Aug 25, 1993||Mar 2, 1994||Cyrix Corporation||Method and system for maintaining cache coherency in a multi-master computer system|
|GB2176918A *||Title not available|
|JPH0421059A *||Title not available|
|WO1988006761A1 *||Feb 29, 1988||Sep 7, 1988||Tandon Corporation||Computer system providing address modification and accommodating dma and interrupts|
|WO1993022726A1 *||Apr 28, 1993||Nov 11, 1993||Compaq Computer Corporation||Single map data destination facility|
|1||IBM TDB, "Memory Map Protection Circuit", vol. 29, No. 11, Apr. 1987, pp. 4971-4975.|
|2||*||IBM TDB, Memory Map Protection Circuit , vol. 29, No. 11, Apr. 1987, pp. 4971 4975.|
|3||*||PCI Local Bus , Revision 2.0, Apr. 30 1993, PCI Local Bus Specification , pp. 1 198.|
|4||PCI Local Bus, Revision 2.0, Apr. 30 1993, "PCI Local Bus Specification", pp. 1-198.|
|5||*||PowerPC 601 Risc Microprocessor Users Manual MPC 601 UM/AD , Chapter 6, Section 6.1, pp. 6 2 through 6 8. Jan. 1993.|
|6||PowerPC 601 Risc Microprocessor Users Manual MPC 601 UM/AD, Chapter 6, Section 6.1, pp. 6-2 through 6-8. Jan. 1993.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US5937170 *||Feb 21, 1997||Aug 10, 1999||Vlsi Technology, Inc.||Data communications with processor-assertable addresses mapped to peripheral-accessible-addresses-times-command product space|
|US5958015 *||Oct 29, 1996||Sep 28, 1999||Abirnet Ltd.||Network session wall passively listening to communication session, with use of access rules, stops further communication between network devices by emulating messages to the devices|
|US6049876 *||Feb 9, 1998||Apr 11, 2000||Motorola, Inc.||Data processing system and method which detect unauthorized memory accesses|
|US6212614 *||Nov 30, 1999||Apr 3, 2001||Trw Inc.||Legacy MIL-STD-1750A software emulator address translation using power PC memory management hardware|
|US6438675 *||Mar 23, 1998||Aug 20, 2002||Ati Technologies, Inc.||Variable format memory access device|
|US6453429||Apr 29, 1999||Sep 17, 2002||International Business Machines Corporation||Method and apparatus for bus hang detection and identification of errant agent for fail safe access to trapped error information|
|US6457025||Feb 5, 2001||Sep 24, 2002||David H. Judson||Interstitial advertising display system and method|
|US6697971||Oct 24, 2000||Feb 24, 2004||Hewlett-Packard Development Company, L.P.||System and method for detecting attempts to access data residing outside of allocated memory|
|US6754713||Sep 3, 1999||Jun 22, 2004||Computer Associates Think, Inc.||System and method of controlling communication sessions|
|US7010698||Feb 14, 2002||Mar 7, 2006||Invicta Networks, Inc.||Systems and methods for creating a code inspection system|
|US7426625 *||Mar 31, 2004||Sep 16, 2008||International Business Machines Corporation||Data processing system and computer program product for support of system memory addresses with holes|
|US7496769 *||Dec 20, 2004||Feb 24, 2009||Microsoft Corporation||Hierarchical trusted code for content protection in computers|
|US7752432||Mar 6, 2006||Jul 6, 2010||Invicta Networks, Inc.||Systems and methods for creating a code inspection system|
|US9256568 *||Sep 12, 2012||Feb 9, 2016||Sunix Co., Ltd.||PCI-based interfacing device with mappable port addresses to legacy I/O port addresses|
|US20010032863 *||Jun 21, 2001||Oct 25, 2001||Ilya Feygin||Article and method for flow control in liquid dispensing devices|
|US20020116635 *||Feb 14, 2002||Aug 22, 2002||Invicta Networks, Inc.||Systems and methods for creating a code inspection system|
|US20040167930 *||Feb 23, 2004||Aug 26, 2004||Vilcauskas Andrew J.||Post-session Internet advertising system|
|US20050022117 *||Feb 23, 2004||Jan 27, 2005||Vilcauskas Andrew J.||Post-session internet advertising system|
|US20050223185 *||Mar 31, 2004||Oct 6, 2005||International Business Machines Corporation||Data processing system and computer program product for support of system memory addresses with holes|
|US20050235362 *||Dec 20, 2004||Oct 20, 2005||Microsoft Corporation||Hierarchical trusted code for content protection in computers|
|US20080059316 *||Oct 30, 2007||Mar 6, 2008||Vilcauskas Andrew J Jr||Post-session internet advertising system|
|US20080059905 *||Oct 30, 2007||Mar 6, 2008||Vilcauskas Andrew J Jr||Post-session internet advertising system|
|US20080065494 *||Oct 30, 2007||Mar 13, 2008||Vilcauskas Andrew J Jr||Post-session internet advertising system|
|US20100122078 *||Jan 18, 2010||May 13, 2010||Invicta Networks Inc.||Systems and methods for creating a code inspection system|
|US20130290579 *||Sep 12, 2012||Oct 31, 2013||Ming-Cheng Lin||Pci-based interfacing device with mappable port addresses to legacy i/o port addresses|
|CN100385420C||Feb 18, 2005||Apr 30, 2008||国际商业机器公司||Data processing system and method for support of system memory addresses with holes|
|U.S. Classification||710/3, 711/202, 711/163, 711/E12.014, 718/104, 711/115, 711/E12.101, 711/208, 711/206|
|International Classification||G06F13/14, G06F12/14, G06F12/02, G06F12/10|
|Cooperative Classification||G06F12/1441, G06F12/0292, G06F12/1081, G06F2212/206|
|European Classification||G06F12/02D6, G06F12/14C1B|
|Jan 24, 1994||AS||Assignment|
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CARPENTER, GARY D.;DEAN, MARK E.;FAUCHER, MARC R.;AND OTHERS;REEL/FRAME:006890/0147;SIGNING DATES FROM 19931111 TO 19940112
|Dec 29, 1999||FPAY||Fee payment|
Year of fee payment: 4
|Sep 25, 2003||FPAY||Fee payment|
Year of fee payment: 8
|Feb 25, 2008||REMI||Maintenance fee reminder mailed|
|Aug 20, 2008||LAPS||Lapse for failure to pay maintenance fees|
|Oct 7, 2008||FP||Expired due to failure to pay maintenance fee|
Effective date: 20080820