🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.micro.atari
Article #2266

Re: Bus contention

#2266
From: Jan Gray
Date: Tue, 28 Jan 1986 15:13
46 lines
2856 bytes
In article <2048@watdcsu.UUCP> dmcanzi@watdcsu.UUCP (David Canzi) writes:
>To refresh a 640 by 400 bit screen 70 times per second from memory 16
>bits wide requires reading memory 1.12 million times per second.  It
>takes 4 clock cycles (minimum) for the processor to read a word from
>memory.  I would assume the same applies to the screen logic, *plus*
>the time it takes to get control of the bus before reading, and
>relinquish it after reading.  With an 8 megahertz clock, the screen
>must be slowing down the processor by at least a factor of 2.
>
>Or have I made a mistaken assumption somewhere?
>
>David Canzi

Yes.  Although it takes 4 clocks for the processor to read a word from
memory, that doesn't mean it takes 4+4=8 clocks for both the processor
and the video display circuitry to get a word from memory.  If memory
is fast enough, it is possible to run the processor at ALMOST full
speed and insert video display cycles in between processor cycles.

A rough (from memory) diagram of a 68000 memory access:

(ns)	0	       125	       250	       375	       500
(clock)	|	1	|	2	|	3	|	4	|
	|		|		|		|		|
	| setup address	| start memory	| wait for mem	| deassert address
	| and control	| cycle		| acknowledge	| and control	|
	| signals	|		|		| signals	|

The 68000 only needs access to the RAMS during clocks 2 and 3 (as I have
indicated them above).  If hardware was clever enough, and memory
fast enough, you could sneak in a video fetch during cycles 4 and 1.

This is exactly what the ST, Macintosh and Amiga do.  They all have fast
memory (250 ns -- ST, 280ns Amiga, ?? Mac) and stick a video (or whatever)
cycle in there with the processor access.

Why did I say "ALMOST full speed"?  The 68000 is an asynchronous part
(that is to say, its not synchronized with the bus), but the scheme
I presented above IS synchronous!  The arbitration circuitry inserts
wait states until the processor gets synchronized to the bus.  So long as
the 68000 executes instructions which take a multiple of 4 clocks, it will
stay synchronized.  Unfortunately there are a few instructions which
take 2 (mod 4) clocks, and which cause the hardware to insert wait states
(effectively throwing away 2 clocks).

Jan Gray		Looking Glass Software		(519) 884-7473
Technical Details
Message-ID: <489@looking.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!watmath!looking!jan
References: <2048@watdcsu.UUCP>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site looking.UUCP
Path: arc1-ca.pugleaf.net!utzoo!watmath!looking!jan
From: jan@looking.UUCP (Jan Gray)
Newsgroups: net.micro.atari
Subject: Re: Bus contention
Message-ID: <489@looking.UUCP>
Date: Tue, 28-Jan-86 10:13:00 EST
Article-I.D.: looking.489
Posted: Tue Jan 28 10:13:00 1986
Date-Received: Wed, 29-Jan-86 04:27:32 EST
References: <2048@watdcsu.UUCP>
Reply-To: @looking.UUCP (Jan Gray)
Organization: Looking Glass Software Ltd. Waterloo, Ontario
Lines: 46