Patent GB-1487078-A (GB)
Title: Buffered virtual storage and data processing system
IPC: G06F12/08
Filed: 1974-11-11
Abstract: 1487078 Processing system AMDAHL CORP and FUJITSU Ltd 11 Nov 1974 [21 Nov 1973] 48768/74 Heading G4A In a virtual memory data processing system having a main store, a high speed buffer store, a translation store 255 (Fig. 3) storing a programme identifier name, the associated logical address and the corresponding real address and a programme identifier store 340 having locations each for storing a name identifying a different programme, at least one location in the store 340 is held empty and available for use by a new programme. Three level storage control unit (Fig. 2, not shown).-The storage control unit receives on a first input (362) a logical address from the instruction unit and on a second input (354) information uniquely identifying the current programme the segment base information which identifies translation tables used for converting logical addresses into real addresses., It comprises the page size, segment size, real address in main store of the segment table and the length of the segment table. The low order bits address programme identifier store (155) and the high order bits are fed via register (393) to comparators (217, 321) with the information read out from the identifier store (155) to determine whether information relating to the current programme is stored. The data portion from one or other section (322, 324) of the identifier store (155) is then gated into a register (379) the register also receiving the high order logical address bits. The low order bits are used to address the sections of logical translation store (255) the contents of the register (379) being compared in two comparators (328, 329) with the contents of the addressed location in the index part of the store. If comparison occurs the corresponding data portion which represents the real address is gated into a register (359) and fed to comparators (336, 337) for comparison with the information read from the buffer store (355), the index portion of which is addressed using the high order bits from the register (363). If comparison occurs the corresponding data protion is read into register (387). If no comparison is found in the comparators (328, 329) the main store is addressed, the real address fetched from the translation table being then stored in the data portion of store (255). If no comparison is found in the comparators (336, 337) the main store is accessed and the data is loaded into the data portion of the high speed store (355) and the high order address bits are entered into the index portion. Two level storage control units (Fig. 3).-In a second embodiment register (363 stores 24 address bits (bits 8-31) and 5 programme identifier bits (bits 32-36). Bits 8-26 and 32-36 are input to logical address registers 379, bits 14-20 being used to address translation store 255 which has two parts (index and address) each of 128 locations the outputs of sections 381-382 if the index part being compared in comparators 328, 329 with the high order logical address bits and identifier bits, the comparators respectively controlling read out of 13 data bits from one or other sections 356, 357 of the address part to real address register 359. These correspond to bits 8-20 of the real address, the register 379 also being connected to the register 359. The contents of register 379 are fed to address registers 364 to access the main store if the information is not in the buffer memory. The buffer memory 355 is addressed by five low order bits (bits 21- 26) of the logical address of register 363. The buffer comprises two sections the first having two parts 365, 366 each having 256 locations for storing a 5 bit main store key and 11 high order address bits and when addressed gating out four 16 bit groups one of which is selected by decoding bits 19-20 of the contents of real address register 359. The selected information is fed to comparators 336, 337 for comparison with the contents of register 359, at comparison the contents of the associated part of the second section 367, 368 (which is addressed by the 8 low order address bits 21-28 and comprises for each part 256 locations of 256 bits, bits 27, 28 selecting 64 of these bits) being read out to one or more of the output registers 387-391. The contents of register 387 which is a translation register together with the contents of register 374, 376 (fed from the register 363) are selectively connectible to line adder 360 or byte adder 361 to increment the complete address by 0, 32 or 2048 or to increment the bute address by 0, 4 or 8, the new address being fed back to the buffer register 363. Programme identifier store (Fig. 4, not shown).-The programme identifier store of the embodiment of Fig. 3 receives a 30 bit-signal from control registers in the instruction unit. Bits 0-7 define the segment table level and bits 8-25 define the segment table address and are mapped into 7 output bits giving the origin of the programme having control of the system. Bits 8 and 9 define the page size (2K or 4K bytes) and bits 11, 12 define the segment size (64K or 1M). The 7 output bits are used to address the segment base stack (291) which has 128 locations each of 41 bits, 30 bits representing segment information, five bits representing an identifier name, five bits representing the priority field and one bit a validity field. The stack output is compared with the segment base information and if comparison occurs and the validity bit is set a signal (FND) indicates that the information is held in the stack. The five identifier bits are gated via a register (294) to the buffer address register 363 of Fig. 3. When a previously full location is overwritten the identifier of the displaced programme is fed to register 363 to invalidate all store entries having the same name. Priority is determined by inserting the name of the programme having the highest priority into a register (295) and comparing it at each access with the contents of the register (294), if they differ the priority of the stored programme being updated. Operation.-Initially the supervisor programme causes the control register to be loaded with 30 bits specifying the page size, segment size, segment table level and real address bits. The 18 bit real address is mapped into a 7 bit address in circuitry (287, Fig. 4, not shown) and used to address the stack (291) which since it is empty results in a not found signal. The stack is consequently re-addressed at the next successive address and again a not found signal is generated. This results in the segment base information being loaded into the address location and its validity bits set, the name field being gated from a register (207) and its priority being set to the highest level. Next the store is re-accessed resulting in the programme name being gated out to the buffer address register 363 (Fig. 3) to address buffer register 255. Since it is the first access the desired information must be fetched from main store. This is effected by feeding the real address and segment information via buffer address register 363, registers 379, 359 and bus 809<SP>1</SP> to the main store. This results in the page table origin address being gated to translation register 387 from where it is fed together with the page number in register 262 to buffer address register 363 to again access main store. This second access gives the page table entry which is fed into translation register 387. The logical address in register 374 is then used to address store 255 and the contents of the register 387 are gated in at this address together with the logical address and five name bits held in register 363. Readdressing the store 255 results in the high order real address bits being fed to real address register 359 and again used to access main store, the fetch data being fed into the data portion of data buffer store 355, the real address bits being fed into the index portion of the store. If subsequently the same programme and the same logical address are requested the information is then read from the buffer store 355 without accessing main store.