Most routers don't use associative memory or CAMs for routing table lookups, this is mostly done for layer 2 switching.
It is because CAM is not large enough for the global routing table.
Vendors such as Cisco and Juniper use n-way tries for this, which is generally quite efficient even for lookups in very large tables.
1K CAM is very fast.
(Note though that looking up routes for the purpose of forwarding is not
the main operational issue with a large routing table, as this scales at
worst at O(log(n)):
Note that the amount of hardware is O(n).
Note that it costs more than O(log(n)) times to make already fast memory O(log(n)) times faster.
Note that, with planar layout, there is O(sqrt(n)) factor.
I don't think CAMs are the right solution, as they are very inflexible
Consider a router on a chip, which is very inflexible, anyway.
A router in a chip is a lot more faster than a router on two chips.
This way, looking up a route always
takes one memory cycle, it doesn't get much better than that. Obviously
then the routing table must fit in memory, which means the longest
prefixes that can be looked up this way are in the order of 26 bits.
Large memory is slow. Note also your comment on BGP convergence.
In any event, I think putting an artificial limit on the size of the routing table is probably more harmful than useful, especially in the long run and/or if the limit is quite low such as 8k.
Why do you think 8k quite low?
A more fruitful approach would be to look at mechanisms to remove
unnecessary routing information from routing tables. The obvious way to
do this would be to take advantage of geographic grouping of prefixes
where possible.
Then, how may route, do you think, is enough?