read ahead read also impacts the output. Try the same thing on adventureworks2008R2. If traceflag 652 is off then for 30 rows around 484 pages are brought into cache. There are around 480 read ahead reads.For 50 or more rows it brings all the pages into memory. If the trace flag is off then just 11 pages comes into the buffer.
Also off course if no index on the column specified in orderby then It has to read all pages whether topp has specified just 1 row.
I ran below query.
select top 30 * from sales.salesorderheader order by slaesorderid
]]>